Dot-Net
“重載”方法的 WCF 最佳實踐
在 WCF 上模擬重載方法的最佳實踐是什麼?
通常我可能會寫一個這樣的介面
interface IInterface { MyType ReadMyType(int id); IEnumerable<MyType> ReadMyType(String name); IEnumerable<MyType> ReadMyType(String name, int maxResults); }將其轉換為 WCF後**,**此界面會是什麼樣子?
如果你願意,你可以這樣離開。只需使用 OperationContract 屬性的 name 屬性。
[ServiceContract] interface IInterface { MyType ReadMyType(int id); [OperationContract(Name= "Foo")] IEnumerable<MyType> ReadMyType(String name); [OperationContract(Name= "Bar")] IEnumerable<MyType> ReadMyType(String name, int maxResults); }
正如 mwilson 已經說過的 - WCF 不允許方法在服務定義(WSDL)中具有相同的名稱。
如果在 .NET 中有兩個或多個(重載)同名方法,則需要通過在每個方法
Name=的屬性上指定 a 來消除 WCF 服務定義的歧義。[OperationContract]請記住:WCF不是.NET(或不是單獨的 .NET)——它是一個可互操作的標準,而 WSDL 標準目前不支持方法重載——每個方法都必須通過名稱唯一標識。