Domanda

In .NET Remoting, il metodo Activator.GetObject ha un parametro state . Qual è lo scopo di questo parametro state ? Posso recuperarne il valore dal lato server?

mdsn non ha aiutato molto.

Cosa mi piacerebbe fare:
Lato client:
ChannelServices.RegisterChannel (new TcpChannel (0));
object obj = Activator.GetObject (typeof (MyObj), " tcp: // serverName: 1234 / RemoteObj " ;, " myCustomData ");

Lato server:
Accedi a " myCustomData " stringa.

È stato utile?

Soluzione

Non sono del tutto sicuro di quale sia lo scopo di questo campo di stato, ma sembra essere un valore specifico del canale non utile al tuo codice. Tracciando Activator.GetObject in Reflector noterai che alla fine viene passato a IChannelSender.CreateMessageSink . L'uso di questi dati è specifico dell'implementazione.

Una rapida ricerca ha rivelato un solo implementatore se IChannelSender : CrossAppDomainChannel . In questa particolare implementazione il parametro state viene usato solo se è di un tipo particolare: CrossAppDomainData . Questa è una classe interna che non è accessibile al tuo programma e quindi non serve a niente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top