RealProxy.Invoke(IMessage) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Při přepsání v odvozené třídě vyvolá metodu, která je určena v zadaném IMessage vzdáleném objektu, který je reprezentován aktuální instancí.
public:
abstract System::Runtime::Remoting::Messaging::IMessage ^ Invoke(System::Runtime::Remoting::Messaging::IMessage ^ msg);
public abstract System.Runtime.Remoting.Messaging.IMessage Invoke(System.Runtime.Remoting.Messaging.IMessage msg);
abstract member Invoke : System.Runtime.Remoting.Messaging.IMessage -> System.Runtime.Remoting.Messaging.IMessage
Public MustOverride Function Invoke (msg As IMessage) As IMessage
Parametry
- msg
- IMessage
A IMessage , který obsahuje IDictionary informace o volání metody.
Návraty
Zpráva vrácená vyvolanou metodou obsahující návratovou hodnotu a všechny out parametry ref .
Příklady
virtual IMessage^ Invoke( IMessage^ myMessage ) override
{
Console::WriteLine( "MyProxy 'Invoke method' Called..." );
if ( dynamic_cast<IMethodCallMessage^>(myMessage) )
{
Console::WriteLine( "IMethodCallMessage*" );
}
if ( dynamic_cast<IMethodReturnMessage^>(myMessage) )
{
Console::WriteLine( "IMethodReturnMessage*" );
}
if ( dynamic_cast<IConstructionCallMessage^>(myMessage) )
{
// Initialize a new instance of remote object
IConstructionReturnMessage^ myIConstructionReturnMessage = this->InitializeServerObject( static_cast<IConstructionCallMessage^>(myMessage) );
ConstructionResponse^ constructionResponse = gcnew ConstructionResponse( nullptr,static_cast<IMethodCallMessage^>(myMessage) );
return constructionResponse;
}
IDictionary^ myIDictionary = myMessage->Properties;
IMessage^ returnMessage;
myIDictionary[ "__Uri" ] = myUri;
// Synchronously dispatch messages to server.
returnMessage = ChannelServices::SyncDispatchMessage( myMessage );
// Pushing return value and OUT parameters back onto stack.
IMethodReturnMessage^ myMethodReturnMessage = dynamic_cast<IMethodReturnMessage^>(returnMessage);
return returnMessage;
}
public override IMessage Invoke(IMessage myMessage)
{
Console.WriteLine("MyProxy 'Invoke method' Called...");
if (myMessage is IMethodCallMessage)
{
Console.WriteLine("IMethodCallMessage");
}
if (myMessage is IMethodReturnMessage)
{
Console.WriteLine("IMethodReturnMessage");
}
if (myMessage is IConstructionCallMessage)
{
// Initialize a new instance of remote object
IConstructionReturnMessage myIConstructionReturnMessage =
this.InitializeServerObject((IConstructionCallMessage)myMessage);
ConstructionResponse constructionResponse = new
ConstructionResponse(null,(IMethodCallMessage) myMessage);
return constructionResponse;
}
IDictionary myIDictionary = myMessage.Properties;
IMessage returnMessage;
myIDictionary["__Uri"] = myUri;
// Synchronously dispatch messages to server.
returnMessage = ChannelServices.SyncDispatchMessage(myMessage);
// Pushing return value and OUT parameters back onto stack.
IMethodReturnMessage myMethodReturnMessage = (IMethodReturnMessage)returnMessage;
return returnMessage;
}
Public Overrides Function Invoke(myMessage As IMessage) As IMessage
Console.WriteLine("MyProxy 'Invoke method' Called...")
If TypeOf myMessage Is IMethodCallMessage Then
Console.WriteLine("IMethodCallMessage")
End If
If TypeOf myMessage Is IMethodReturnMessage Then
Console.WriteLine("IMethodReturnMessage")
End If
If TypeOf myMessage Is IConstructionCallMessage Then
' Initialize a new instance of remote object
Dim myIConstructionReturnMessage As IConstructionReturnMessage = _
Me.InitializeServerObject(CType(myMessage, IConstructionCallMessage))
Dim constructionResponse As _
New ConstructionResponse(Nothing, CType(myMessage, IMethodCallMessage))
Return constructionResponse
End If
Dim myIDictionary As IDictionary = myMessage.Properties
Dim returnMessage As IMessage
myIDictionary("__Uri") = myUri
' Synchronously dispatch messages to server.
returnMessage = ChannelServices.SyncDispatchMessage(myMessage)
' Pushing return value and OUT parameters back onto stack.
Dim myMethodReturnMessage As IMethodReturnMessage = _
CType(returnMessage, IMethodReturnMessage)
Return returnMessage
End Function 'Invoke
Poznámky
Když je volána transparentní proxy, která je podporována RealProxy , deleguje volání metody Invoke . Metoda Invoke transformuje zprávu v msg parametru IMethodCallMessagena a odešle ji do vzdáleného objektu, který je reprezentován aktuální instancí RealProxy.
Parametr IMessage poskytuje slovník prostřednictvím IMessage.Properties vlastnosti. Slovník obsahuje páry názvů a hodnot informací o volání metody, například název volané metody a její parametry.