Хотя я в первую очередь не согласен с этим, интересно исследовать эту идею.
Принимая во внимание общую картину: экземпляры MyType будут создаваться на стороне сервера и на стороне клиента.
Они либо будут явно созданы кодом, либо созданы, когда платформа WCF десериализует сообщение. Например, если ваша служба принимает в качестве параметра объект MyType , тогда ваш клиентский код должен будет создать экземпляр и передать его вызову WCF. На этом этапе платформа WCF будет сериализовать ее, вызывая все методы получения и записывая в XML, а затем структура WCF на стороне сервера создаст новую копию и вызовет все методы set во время десериализации.
На стороне сервера ваш недавно десериализованный экземпляр MyType может получить экземпляр службы с помощью следующего кода:
var serviceInstance = (MyService) OperationContext.Current.InstanceContext.GetServiceInstance()
(Я не знаю, сработает ли это, потому что заданные методы будут вызываться во время десериализации экземпляра MyType . Доступен ли текущий InstanceContext в этот момент?)
Но на стороне клиента контекст операции отсутствует, поэтому вы не можете вызвать этот код.
Вы можете просто проверить, является ли OperationContext.Current нулевым или нет. Или вы можете вручную закодировать определения интерфейса на стороне сервера и на стороне клиента, чтобы реализация MyType на сервере имела эту дополнительную логику установки, а реализация на клиенте - нет. Конечно, наличие двух соответствующих, но слегка отличающихся друг от друга определений интерфейса создает целый вопрос обслуживания.
Удачи, мне было бы интересно узнать, как устроено ваше приключение.