0

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 を参照してください。

それで、どうすれば修正できますか?

4

1 に答える 1