ObjRef.TypeInfo プロパティ
アセンブリ: mscorlib (mscorlib.dll 内)

Dim instance As ObjRef Dim value As IRemotingTypeInfo value = instance.TypeInfo instance.TypeInfo = value
public: virtual property IRemotingTypeInfo^ TypeInfo { IRemotingTypeInfo^ get (); void set (IRemotingTypeInfo^ value); }
/** @property */ public IRemotingTypeInfo get_TypeInfo () /** @property */ public void set_TypeInfo (IRemotingTypeInfo value)
public function get TypeInfo () : IRemotingTypeInfo public function set TypeInfo (value : IRemotingTypeInfo)
ObjRef が記述するオブジェクトの IRemotingTypeInfo。

TypeInfo は、現在の ObjRef が表しているリモート オブジェクトの型に関する詳細情報を格納します。現在のプロパティは、その型が実装するインターフェイスの一覧と、型の階層構造を格納しています。この情報は、プロキシをインクリメント方式で詳細に指定して、クライアントに対するリモート オブジェクト型の表示を調整するために使用できます。

// a custom ObjRef class that outputs its status [PermissionSet(SecurityAction.Demand, Name="FullTrust")] public class MyObjRef : ObjRef { // only instantiate via marshaling or deserialization private MyObjRef() { } public MyObjRef(MarshalByRefObject o, Type t) : base(o, t) { Console.WriteLine("Created MyObjRef."); ORDump(); } public MyObjRef(SerializationInfo i, StreamingContext c) : base(i, c) { Console.WriteLine("Deserialized MyObjRef."); } public override void GetObjectData(SerializationInfo s, StreamingContext c) { // After calling the base method, change the type from ObjRef to MyObjRef base.GetObjectData(s, c); s.SetType(GetType()); Console.WriteLine("Serialized MyObjRef."); } public override Object GetRealObject(StreamingContext context) { if ( IsFromThisAppDomain() || IsFromThisProcess() ) { Console.WriteLine("Returning actual object referenced by MyObjRef."); return base.GetRealObject(context); } else { Console.WriteLine("Returning proxy to remote object."); return RemotingServices.Unmarshal(this); } } public void ORDump() { Console.WriteLine(" --- Reporting MyObjRef Info --- "); Console.WriteLine("Reference to {0}.", TypeInfo.TypeName); Console.WriteLine("URI is {0}.", URI); Console.WriteLine("\nWriting EnvoyInfo: "); if ( EnvoyInfo != null) { IMessageSink EISinks = EnvoyInfo.EnvoySinks; while (EISinks != null) { Console.WriteLine("\tSink: " + EISinks.ToString()); EISinks = EISinks.NextSink; } } else Console.WriteLine("\t {no sinks}"); Console.WriteLine("\nWriting ChannelInfo: "); for (int i = 0; i < ChannelInfo.ChannelData.Length; i++) Console.WriteLine ("\tChannel: {0}", ChannelInfo.ChannelData[i]); Console.WriteLine(" ----------------------------- "); } } // a class that uses MyObjRef [PermissionSet(SecurityAction.Demand, Name="FullTrust")] public class LocalObject : MarshalByRefObject { // overriding CreateObjRef will allow us to return a custom ObjRef public override ObjRef CreateObjRef(Type t) { return new MyObjRef(this, t); } }
// a custom ObjRef class that outputs its status [System::Security::Permissions::SecurityPermissionAttribute( System::Security::Permissions::SecurityAction::Demand, Flags=System::Security::Permissions::SecurityPermissionFlag::SerializationFormatter)] [System::Security::Permissions::SecurityPermissionAttribute (System::Security::Permissions::SecurityAction::Demand, Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)] [System::Security::Permissions::SecurityPermissionAttribute (System::Security::Permissions::SecurityAction::InheritanceDemand, Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)] public ref class MyObjRef: public ObjRef { private: // only instantiate via marshaling or deserialization MyObjRef(){} public: MyObjRef( MarshalByRefObject^ o, Type^ t ) : ObjRef( o, t ) { Console::WriteLine( "Created MyObjRef." ); ORDump(); } MyObjRef( SerializationInfo^ i, StreamingContext c ) : ObjRef( i, c ) { Console::WriteLine( "Deserialized MyObjRef." ); } virtual void GetObjectData( SerializationInfo^ s, StreamingContext c ) override { // After calling the base method, change the type from ObjRef to MyObjRef ObjRef::GetObjectData( s, c ); s->SetType( GetType() ); Console::WriteLine( "Serialized MyObjRef." ); } virtual Object^ GetRealObject( StreamingContext context ) override { if ( IsFromThisAppDomain() || IsFromThisProcess() ) { Console::WriteLine( "Returning actual Object* referenced by MyObjRef." ); return ObjRef::GetRealObject( context ); } else { Console::WriteLine( "Returning proxy to remote Object*." ); return RemotingServices::Unmarshal( this ); } } void ORDump() { Console::WriteLine( " --- Reporting MyObjRef Info --- " ); Console::WriteLine( "Reference to {0}.", TypeInfo->TypeName ); Console::WriteLine( "URI is {0}.", URI ); Console::WriteLine( "\nWriting EnvoyInfo: " ); if ( EnvoyInfo != nullptr ) { IMessageSink^ EISinks = EnvoyInfo->EnvoySinks; while ( EISinks != nullptr ) { Console::WriteLine( "\tSink: {0}", EISinks ); EISinks = EISinks->NextSink; } } else Console::WriteLine( "\t {no sinks}" ); Console::WriteLine( "\nWriting ChannelInfo: " ); for ( int i = 0; i < ChannelInfo->ChannelData->Length; i++ ) Console::WriteLine( "\tChannel: {0}", ChannelInfo->ChannelData[ i ] ); Console::WriteLine( " ----------------------------- " ); } }; // a class that uses MyObjRef public ref class LocalObject: public MarshalByRefObject { public: // overriding CreateObjRef will allow us to return a custom ObjRef [System::Security::Permissions::SecurityPermissionAttribute (System::Security::Permissions::SecurityAction::LinkDemand, Flags=System::Security::Permissions::SecurityPermissionFlag::Infrastructure)] virtual ObjRef^ CreateObjRef( Type^ t ) override { return gcnew MyObjRef( this,t ); } };

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からObjRef.TypeInfo プロパティを検索する場合は、下記のリンクをクリックしてください。

- ObjRef.TypeInfo プロパティのページへのリンク