wcf を使用するプロジェクトがあります。現在、NetDataContractSerializer を使用しています。protobuf-net に移行したい。私のサービスには以下の契約があります:
interface IRemotingServer
{
[OperationContract]
TypeConfig GetTypeConfig(string typename);
[OperationContract]
object ExecuteMethod(InstanceIdentifier instance, string methodName, object[] parameters);
[OperationContract]
object ExecuteGenericMethod(InstanceIdentifier instance, string methodName, object[] parameters, string[] genericTypes, string returnType);
[OperationContract]
object GetRemoteProperty(InstanceIdentifier instance, string propertyName);
[OperationContract]
void SetRemoteProperty(InstanceIdentifier instance, string propertyName, object value);
[OperationContract]
ObjectDataPacket GetObject(InstanceIdentifier instance);
[OperationContract]
bool Connect();
[OperationContract]
bool Disconnect();
}
戻り値の型がオブジェクトである契約の GetRemoteProperty メソッドを呼び出そうとするまで、うまくいきます。私が見つけたサーバートレースを使用すると、そのサーバーは次のメッセージで爆発します
パラメータhttp://www.mersoft.am/Remoting:GetRemotePropertyResultをシリアル化しようとしているときにエラーが発生しました。InnerException メッセージは、データ コントラクト名が 'ArrayOfInstanceIdentifier:Mersoft.Remoting' の 'Type 'Mersoft.Remoting.InstanceIdentifier[]' ではありません。DataContractResolver の使用を検討するか、既知の型のリストに静的に認識されていない型を追加します。たとえば、KnownTypeAttribute 属性を使用するか、DataContractSerializer に渡される既知の型のリストにそれらを追加します。詳細については、InnerException を参照してください。
それで、どうすれば修正できますか?