2010-06-01 72 views
2

已创建一些WCF的方法和我有一个名为IsValidLogin方法...有各种版本,1需要2串1需要一个对象等具有不同签名的相同方法的推荐命名约定?

当然WCF中你不能重载方法任何人都可以建议命名这些方法的最佳方法..

我在想IsValidLogin1,IsValidLogin2 ??

但我愿意接受任何建议。

回答

4

当你开始向你的标识符添加索引号时,你通常做错了。

我看到的一种方法是将“With”和参数名称添加到名称,即IsValidLoginWithUsernamePassword和IsValidLoginWithToken(假设您的对象是某种身份验证令牌)。这些虽然很长。

我只是调用方法IsValidUsernamePassword和IsValidToken。

+0

非常感谢,这是我所需要的。 – 2010-06-01 15:03:50

+1

我通常使用“By”,但是相同的概念。 – GalacticCowboy 2010-06-01 17:43:52

+0

@GalacticCowboy:对于主要用于获取数据的方法,我更喜欢“By”。 'GetUserById'和什么。 – 2010-06-01 18:35:35

0

我不认为IsValidLogin1,2等足够清晰。当你正常地重载方法时,你不必担心名字,因为它是具有不同参数的相同名称,但是在这种情况下,你必须记住每个方法的参数,并且数字可能会变得无法理解。

我可能会建议IsValidLoginNumStr等,也就是说,可能会列出方法名称中的关键参数,以帮助您提醒您所指的是哪种方法。要么是这个,要么就是要一个密码,然后是IsValidLoginPass,或者类似的东西。我这样说是因为我是一个很长的描述性方法名称的粉丝。如果你想尽可能缩短名字,你可以考虑一个可以帮助的字母,比如P代表密码,或者O代表对象,然后在最后加上一个有用的字母。从长远来看,超过一个数字将有助于你

2

首先,在使用wcf服务时,您应该坚持使用消息/合同优先方法,传递请求并返回响应。这将为您节省很多头痛的道路。

话虽这么说,你应该创建两个方法,像这样:

public LoginValidResponse IsLoginValid(UserObjectRequest userRequest) 

public LoginValidResponse IsLoginValid(UsernamePasswordRequest usernameRequest) 

有可能是这些更好的名字,但你的想法。如果您提供了更多关于您传递的内容的信息,我可以提供更多的命名帮助。

注意这两个方法返回相同的响应LoginValidResponse

把你的两个字符串放在UsernamePasswordRequest(我假设字符串是用户名和密码)。将用户对象放入UserObjectRequest中。

您也可以在后面的方法中重复使用这些请求/响应,例如GetUserInfo(UserObjectRequest request)

LoginValidResponse将包含您的bool(以及您想要在您的回复中传回的任何其他信息)。

*注意 - 我只将方法命名为IsLoginValid b/c,这是您的问题。在请求/响应模式之上,我可能还会将方法重命名为ValidateLoginByUserValidateLoginByUsername(或类似的东西)。

1

当然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

相关问题