已创建一些WCF的方法和我有一个名为IsValidLogin方法...有各种版本,1需要2串1需要一个对象等具有不同签名的相同方法的推荐命名约定?
当然WCF中你不能重载方法任何人都可以建议命名这些方法的最佳方法..
我在想IsValidLogin1,IsValidLogin2 ??
但我愿意接受任何建议。
已创建一些WCF的方法和我有一个名为IsValidLogin方法...有各种版本,1需要2串1需要一个对象等具有不同签名的相同方法的推荐命名约定?
当然WCF中你不能重载方法任何人都可以建议命名这些方法的最佳方法..
我在想IsValidLogin1,IsValidLogin2 ??
但我愿意接受任何建议。
当你开始向你的标识符添加索引号时,你通常做错了。
我看到的一种方法是将“With”和参数名称添加到名称,即IsValidLoginWithUsernamePassword和IsValidLoginWithToken(假设您的对象是某种身份验证令牌)。这些虽然很长。
我只是调用方法IsValidUsernamePassword和IsValidToken。
我不认为IsValidLogin1,2等足够清晰。当你正常地重载方法时,你不必担心名字,因为它是具有不同参数的相同名称,但是在这种情况下,你必须记住每个方法的参数,并且数字可能会变得无法理解。
我可能会建议IsValidLoginNumStr等,也就是说,可能会列出方法名称中的关键参数,以帮助您提醒您所指的是哪种方法。要么是这个,要么就是要一个密码,然后是IsValidLoginPass,或者类似的东西。我这样说是因为我是一个很长的描述性方法名称的粉丝。如果你想尽可能缩短名字,你可以考虑一个可以帮助的字母,比如P代表密码,或者O代表对象,然后在最后加上一个有用的字母。从长远来看,超过一个数字将有助于你
首先,在使用wcf服务时,您应该坚持使用消息/合同优先方法,传递请求并返回响应。这将为您节省很多头痛的道路。
话虽这么说,你应该创建两个方法,像这样:
public LoginValidResponse IsLoginValid(UserObjectRequest userRequest)
和
public LoginValidResponse IsLoginValid(UsernamePasswordRequest usernameRequest)
有可能是这些更好的名字,但你的想法。如果您提供了更多关于您传递的内容的信息,我可以提供更多的命名帮助。
注意这两个方法返回相同的响应LoginValidResponse
。
把你的两个字符串放在UsernamePasswordRequest(我假设字符串是用户名和密码)。将用户对象放入UserObjectRequest中。
您也可以在后面的方法中重复使用这些请求/响应,例如GetUserInfo(UserObjectRequest request)
。
LoginValidResponse将包含您的bool(以及您想要在您的回复中传回的任何其他信息)。
*注意 - 我只将方法命名为IsLoginValid
b/c,这是您的问题。在请求/响应模式之上,我可能还会将方法重命名为ValidateLoginByUser
和ValidateLoginByUsername
(或类似的东西)。
当然WCF中你不能重载方法任何人都可以提出来命名这些方法的最佳途径..
您可以通过添加独特的OperationContract的行为重载WCF中的方法。 OperationContract具有将WCF方法公开到WSDL模式的Name属性。您的服务端(WCF)代码将保持清洁。但是您仍然必须通过在OperationContract行为的Name属性中定义的签名来调用方法。
[OperationContract(Name="IsValidLoginWithUsernameAndPassword")]
void IsValidLogin(string username,string password);
[OperationContract(Name="IsValidLoginWithToken")]
void IsValidLogin(AuthToken token);
用法......
TestClient client = new TestClient();
string callMethod1 = client.IsValidLoginWithUsernameAndPassword("user","pass");
string callMethod2 = client.IsValidLoginWithToken(authToken);
你可以在这里阅读更多
http://www.codeproject.com/Tips/656042/Method-Overloading-in-WCF
非常感谢,这是我所需要的。 – 2010-06-01 15:03:50
我通常使用“By”,但是相同的概念。 – GalacticCowboy 2010-06-01 17:43:52
@GalacticCowboy:对于主要用于获取数据的方法,我更喜欢“By”。 'GetUserById'和什么。 – 2010-06-01 18:35:35