簡體   English   中英

在運行時提供ServiceKnownType?

[英]Provide ServiceKnownType during runtime?

我在合同中使用了超過100個ServiceKnownType的WCF接口,如下所示:

[ServiceKnownType(typeof(RowUser))]
[ServiceKnownType(typeof(RowRegion))]
[ServiceKnownType(typeof(RowDocument))]
[... loads more ...]
[ServiceContract(SessionMode = SessionMode.Required)]
public interface IServiceBrowse : IDisposable
{
  [OperationContract]
  void Insert(Row satz);
}

有沒有辦法在運行時提供這些ServiceKnownTypes?
將所有這些ServiceKnownTypes添加到源代碼中不僅容易出錯且繁瑣,它使我的程序集以我不喜歡的方式綁定在一起(我希望能夠將這些類型提取到子組件中以將它們分離,但不能,因為服務需要列出所有已知的類型)。

就在這里。

ServiceKnownTypeAttribute允許您將方法名稱指定為第一個參數,后跟包含實現該方法的System.Type的參數。

指定的方法必須是static和public,並且返回類型為IEnumerable。

[ServiceKnownType("RegisterKnownTypes", typeof(Services))]
public class Services : IServices
{
    static public IEnumerable<Type> RegisterKnownTypes(ICustomAttributeProvider provider)
    {
    }
}

另見http://msdn.microsoft.com/en-us/library/system.servicemodel.serviceknowntypeattribute.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM