2009-08-06 8 views
3

IList <がサポートされているprotobuf-netの変更ログに気付きましたが、「インターフェイスのインスタンスを作成できません」というメッセージが表示されています。 IEnumerable <に変更すると、人生は良いです。これは正しいのですか?IList を渡すとIEnumerableを返す<T> with protobuf-net

// Client call 
    public override IList<IApplicationWorkflow> Execute(IRoleManagement service) 
    { 
     IList<ApplicationWorkflowMessagePart> list = service.RetrieveWorkflows(roleNames); 

     IList<IApplicationWorkflow> workflows = new List<IApplicationWorkflow>(list.Count); 

     foreach (ApplicationWorkflowMessagePart a in list) 
     { 
      workflows.Add(new ApplicationWorkflowImpl(a)); 
     } 

     return workflows; 
    } 


    // Service contract 
    [OperationContract, ProtoBehavior] 
    [ServiceKnownType(typeof (ServiceFault))] 
    [FaultContract(typeof (ServiceFault))] 
    IList<ApplicationWorkflowMessagePart> RetrieveWorkflows(string[] roleNames); 


    // Service implementation 
    public IList<ApplicationWorkflowMessagePart> RetrieveWorkflows(string[] roleNames) 
    { 
     IList<IApplicationWorkflow> workflows = manager.RetrieveApplicationWorkflows(roleNames); 
     IList<ApplicationWorkflowMessagePart> workflowParts = new List<ApplicationWorkflowMessagePart>(); 
     if (workflows != null) 
     { 
      foreach (IApplicationWorkflow workflow in workflows) 
      { 
       workflowParts.Add(
        ModelMediator.GetMessagePart<ApplicationWorkflowMessagePart, IApplicationWorkflow>(workflow)); 
      } 
     } 
     return workflowParts; 
    } 

おかげで、 マイクも

、これと他の答えを持っているドキュメントサイトはありますか?私はnewbの質問をすることは嫌いです。 :)現在

答えて

2

それは限り、それは持っていないとして、それを作成するには、プロパティとしてIList<T>をサポートします - のようなものを許可するIEは(簡潔にするために示されていない属性):

class Order { 
    private IList<OrderLine> lines = new List<OrderLine>(); 
    public IList<OrderLine> Lines {get {return lines;}} 
} 

私は希望チェックする必要がありますが、同様の理由から、私はMergeで動作すると期待しますが、Deserialize(これはWCFフックが使用するものです)では動作しません。しかし、私はList<T>にデフォルトすることができなかった理由を考えることができません...それはちょうど現時点ではありません。

最も簡単なオプションはおそらくList<T>/T[]ですが、あなたが望むかどうかはわかりますが、現時点では(作業中の)プロジェクトの「危機」にあります。今日ボンネットを持ち上げないでください。


再「これと他の答えは」... google groupがあり、それは(いるProtobufネットは、単に多くの「プロトコルバッファ」実装の1つである)ばかりいるProtobufネットではありません。

また、project siteに問題を記録することもできます。私はFAQを照合してサイト上のwikiに追加することを意味しますが、時間は必ずしも私の友人ではありません...

しかしねえ!私はここにいる... ;-p

関連する問題