この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

RealProxy クラス

 

公開日: 2016年10月

プロキシの基本機能を提供します。

名前空間:   System.Runtime.Remoting.Proxies
アセンブリ:  mscorlib (mscorlib.dll 内)

System.Object
  System.Runtime.Remoting.Proxies.RealProxy

[SecurityCriticalAttribute]
[ComVisibleAttribute(true)]
[SecurityPermissionAttribute(SecurityAction.InheritanceDemand, 
	Flags = SecurityPermissionFlag.Infrastructure)]
public abstract class RealProxy

名前説明
System_CAPS_protmethodRealProxy()

RealProxy クラスの新しいインスタンスを既定値で初期化します。

System_CAPS_protmethodRealProxy(Type)

新しいインスタンスを初期化、 RealProxy クラスの指定したリモート オブジェクトを表す Typeします。

System_CAPS_protmethodRealProxy(Type, IntPtr, Object)

RealProxy クラスの新しいインスタンスを初期化します。

名前説明
System_CAPS_protmethodAttachServer(MarshalByRefObject)

指定したリモートに現在のプロキシ インスタンスをアタッチ MarshalByRefObjectします。

System_CAPS_pubmethodCreateObjRef(Type)

作成、 ObjRef 指定したオブジェクトの種類され、クライアント側でアクティブ オブジェクトとして、リモート処理インフラストラクチャに登録します。

System_CAPS_protmethodDetachServer()

それが表すリモート サーバー オブジェクトから現在のプロキシ インスタンスをデタッチします。

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_protmethodFinalize()

オブジェクトが、ガベージ コレクションによって収集される前に、リソースの解放とその他のクリーンアップ操作の実行を試みることができるようにします。(Object から継承されます。)

System_CAPS_pubmethodGetCOMIUnknown(Boolean)

現在のプロキシ インスタンスが表すオブジェクトへのアンマネージ参照を要求します。

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodGetObjectData(SerializationInfo, StreamingContext)

現在のインスタンスによって表されるオブジェクトの透過的なプロキシ追加 RealProxy を指定した SerializationInfoします。

System_CAPS_pubmethodGetProxiedType()

返します。、 Type オブジェクトのを、現在のインスタンスの RealProxy を表します。

System_CAPS_pubmethodSystem_CAPS_staticGetStubData(RealProxy)

指定したプロキシに格納されているスタブ データを取得します。

System_CAPS_pubmethodGetTransparentProxy()

透過的なプロキシの現在のインスタンスを返します RealProxyします。

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_protmethodGetUnwrappedServer()

現在のプロキシ インスタンスで表されるサーバー オブジェクトを返します。

System_CAPS_pubmethodInitializeServerObject(IConstructionCallMessage)

オブジェクトの新しいインスタンスを初期化 Type リモート オブジェクトの現在のインスタンス RealProxy を表し、指定した IConstructionCallMessageします。

System_CAPS_pubmethodInvoke(IMessage)

派生クラスでオーバーライドされた場合は、指定されているメソッドを呼び出しで提供されている IMessage 現在のインスタンスによって表されるリモート オブジェクトにします。

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_pubmethodSetCOMIUnknown(IntPtr)

現在のインスタンスによって表されるオブジェクトのアンマネージ プロキシが格納されます。

System_CAPS_pubmethodSystem_CAPS_staticSetStubData(RealProxy, Object)

指定したプロキシのスタブ データを設定します。

System_CAPS_pubmethodSupportsInterface(Guid)

指定した ID を持つ COM インターフェイスを要求します。

System_CAPS_pubmethodToString()

現在のオブジェクトを表す文字列を返します。(Object から継承されます。)

RealProxy クラスは、 abstract 基本クラスのプロキシが派生する必要があります。

あらゆる種類のリモート処理境界を越えてオブジェクトを使用するクライアントは、透過的なプロキシを使用して、オブジェクトは、実際にします。 透過的なプロキシは、クライアントの領域に、実際のオブジェクトが格納されているフィルターの種類を提供します。 これで、リモート処理インフラストラクチャを使用して実際のオブジェクトへの呼び出しを転送することによって、これを実現します。

透過的なプロキシ型のマネージ ランタイム クラスのインスタンスによって自体は RealProxyです。 RealProxy 透過プロキシから、操作を転送するために必要な機能の一部を実装します。 プロキシ オブジェクトがガベージ コレクション、フィールドおよびメソッドのサポートなどの管理オブジェクトに関連付けられたセマンティクスを継承し、新しいクラスを形成する拡張できることに注意してください。 プロキシは、デュアルという性質を持って: リモート オブジェクト (透過プロキシ) と同じクラスのオブジェクトとして機能して、マネージ オブジェクト自体であります。

プロキシ オブジェクトには小文字に関係なく使用できます、 AppDomainです。

System_CAPS_noteメモ

このクラスは、リンク確認要求し、クラス レベルで継承確認要求を使用します。 A SecurityException 直前の呼び出し元または派生クラスのいずれかにインフラストラクチャ アクセス許可があるない場合にスローされます。 セキュリティ要求の詳細については、「 リンク確認要求継承確認要求します。

継承時の注意:

継承する場合 RealProxy, 、オーバーライドする必要があります、 Invoke メソッドです。

// Create a custom 'RealProxy'.
public class MyProxy : RealProxy
{
   String myURIString;
   MarshalByRefObject myMarshalByRefObject;   

   [PermissionSet(SecurityAction.LinkDemand)]
   public MyProxy(Type myType) : base(myType)
   {
      // RealProxy uses the Type to generate a transparent proxy.
      myMarshalByRefObject = (MarshalByRefObject)Activator.CreateInstance((myType));
      // Get 'ObjRef', for transmission serialization between application domains.
      ObjRef myObjRef = RemotingServices.Marshal(myMarshalByRefObject);
      // Get the 'URI' property of 'ObjRef' and store it.
      myURIString = myObjRef.URI;
      Console.WriteLine("URI :{0}", myObjRef.URI);
   }

   [SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.Infrastructure)]
   public override IMessage Invoke(IMessage myIMessage)
   {
      Console.WriteLine("MyProxy.Invoke Start");
      Console.WriteLine("");

      if (myIMessage is IMethodCallMessage)
         Console.WriteLine("IMethodCallMessage");

      if (myIMessage is IMethodReturnMessage)
         Console.WriteLine("IMethodReturnMessage");

      Type msgType = myIMessage.GetType();
      Console.WriteLine("Message Type: {0}", msgType.ToString());
      Console.WriteLine("Message Properties");
      IDictionary myIDictionary = myIMessage.Properties;
      // Set the '__Uri' property of 'IMessage' to 'URI' property of 'ObjRef'.
      myIDictionary["__Uri"] = myURIString;
      IDictionaryEnumerator myIDictionaryEnumerator = 
         (IDictionaryEnumerator) myIDictionary.GetEnumerator();

      while (myIDictionaryEnumerator.MoveNext())
      {
         Object myKey = myIDictionaryEnumerator.Key;
         String myKeyName = myKey.ToString();
         Object myValue = myIDictionaryEnumerator.Value;

         Console.WriteLine("\t{0} : {1}", myKeyName, 
            myIDictionaryEnumerator.Value);
         if (myKeyName == "__Args")
         {
            Object[] myObjectArray = (Object[])myValue;
            for (int aIndex = 0; aIndex < myObjectArray.Length; aIndex++)
               Console.WriteLine("\t\targ: {0} myValue: {1}", aIndex, 
                  myObjectArray[aIndex]);
         }

         if ((myKeyName == "__MethodSignature") && (null != myValue))
         {
            Object[] myObjectArray = (Object[])myValue;
            for (int aIndex = 0; aIndex < myObjectArray.Length; aIndex++)
               Console.WriteLine("\t\targ: {0} myValue: {1}", aIndex, 
                  myObjectArray[aIndex]);
         }
      }

      IMessage myReturnMessage;

      myIDictionary["__Uri"] = myURIString;
      Console.WriteLine("__Uri {0}", myIDictionary["__Uri"]);

      Console.WriteLine("ChannelServices.SyncDispatchMessage");
      myReturnMessage = ChannelServices.SyncDispatchMessage(myIMessage);

      // Push return value and OUT parameters back onto stack.

      IMethodReturnMessage myMethodReturnMessage = (IMethodReturnMessage)
         myReturnMessage;
      Console.WriteLine("IMethodReturnMessage.ReturnValue: {0}", 
         myMethodReturnMessage.ReturnValue);

      Console.WriteLine("MyProxy.Invoke - Finish");

      return myReturnMessage;
   }
}

SecurityPermission

For operating with infrastructure code. Demand value: F:System.Security.Permissions.SecurityAction.LinkDemand; Permission Value: F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure

SecurityPermission

For operating with infrastructure code. Demand value: F:System.Security.Permissions.SecurityAction.InheritanceDemand; Permission Value: F:System.Security.Permissions.SecurityPermissionFlag.Infrastructure

.NET Framework
1.1 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: