Activator.GetObject - Mit dem Zustandsparameter
-
06-07-2019 - |
Frage
In .NET Remoting, Activator.GetObject Methode hat einen Zustand Parameter. Was ist der Zweck dieser Zustand param? Kann ich seinen Wert von Server-Seite abgerufen werden?
MDSN half nicht viel.
Was würde ich tun:
Client-Seite:
ChannelServices.RegisterChannel(new TcpChannel(0));
object obj = Activator.GetObject(typeof(MyObj), "tcp://serverName:1234/RemoteObj", "myCustomData");
Server-Seite:
Erhalten Sie Zugang zum "myCustomData" string.
Lösung
Ich bin mir nicht ganz sicher, was der Zweck dieses Statusfeldes ist, aber es scheint ein Kanal bestimmte Wert zu sein, die nicht von Nutzen Ihres Code. In Verfolgung durch Activator.GetObject
in Reflector werden Sie feststellen, dass es schließlich IChannelSender.CreateMessageSink
geben wird. Die Verwendung dieser Daten ist die Umsetzung spezifisch.
IChannelSender
: Eine schnelle Suche nur ein Implementierer wenn CrossAppDomainChannel
enthüllt. In dieser speziellen Ausführung wird der Zustandsparameter nur verwendet, wenn es von einem bestimmten Typ ist: CrossAppDomainData
. Dies ist eine interne Klasse, die nicht zugänglich zu Ihrem Programm ist und daher nicht von Nutzen.