Используя. NET удаленное взаимодействие между двумя процессами, я вставляю свой собственный приемник IServerChannel на стороне сервера, чтобы я мог перехватывать вызовы, инициированные клиентом, и перемещать их в соответствующий поток на сервере. В настоящее время я борюсь со способом преобразования Uri
сообщения в экземпляр объекта сервера, чтобы я мог его проверить:
public ServerProcessing ProcessMessage(IServerChannelSinkStack sinkStack,
IMessage requestMsg,
ITransportHeaders requestHeaders,
Stream requestStream,
out IMessage responseMsg,
out ITransportHeaders responseHeaders,
out Stream responseStream)
{
if (requestMsg is MethodCall methodCallMessage)
{
// how do I implement ConvertUriToObjectInstance to convert the Uri to a MarshallByRef instance???
object instance = ConvertUriToObjectInstance(requestMsg.Uri);
}
}
Есть ли способ преобразовать Uri в сервер созданный объект в фактический экземпляр MarshallByRef?
Я просмотрел пространство имен / класс System.Runtime.Remoting.Messaging
, как в документации, так и через справочный источник, но я не вижу ничего, связанного с преобразованием Uri обратно в реальный экземпляр, который он представляет. Очевидно, что во время выполнения есть способ сделать это, но есть ли способ получить его, либо через официальный API, либо с помощью отражения?
Примечание Я знаю, что могу перейти потоки через что-то вроде ContextBoundObject
, но я избегаю этого из-за его ограничений - как wrt generics.