在WCF上模拟重载方法的最佳实践是什么?
通常我可能会编写这样的界面
interface IInterface
{
MyType ReadMyType(int id);
IEnumerable<MyType> ReadMyType(String name);
IEnumerable<MyType> ReadMyType(String name, int maxResults);
}
Run Code Online (Sandbox Code Playgroud)
将这个接口是什么样子后,你将它转换到WCF?
mwi*_*son 10
如果你愿意,你可以这样离开.只需使用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);
}
Run Code Online (Sandbox Code Playgroud)
正如mwilson所说 - WCF不允许方法在服务定义(WSDL)中具有相同的名称.
如果在.NET中有两个或多个(重载)方法具有相同的名称,则需要通过Name=在[OperationContract]每个方法的属性上指定一个来消除WCF服务定义的歧义.
请记住:WCF 不是 .NET(或者不是.NET) - 它是一个可互操作的标准,WSDL标准目前不支持方法重载 - 每个方法必须通过名称唯一标识.
| 归档时间: |
|
| 查看次数: |
4237 次 |
| 最近记录: |