3

protobuf-net の変更ログで IList<> がサポートされていることに気付きましたが、「インターフェイスのインスタンスを作成できません」という例外が発生しています。IEnumerable<> に変更すると、人生はうまくいきます。この音は正しいですか?

    // 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;
    }

ありがとう、マイク

また、これと他の回答があるドキュメントサイトはありますか? 初心者に質問するのは嫌いです。:)

4

1 に答える 1

2

現在、それを作成する必要がない限りIList<T>プロパティとしてサポートされます-つまり、次のようなことが許可されます(簡潔にするために属性は示されていません):

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-netだけではありません(protobuf-netは単に多くの「プロトコルバッファ」実装の1つです)。

また、プロジェクト サイトで問題を自由に記録することもできます。よくある質問をまとめてサイトの wiki に追加するつもりですが、時間はいつも味方ではありません...

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

于 2009-08-06T21:42:21.313 に答える