2010-06-01 67 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

相關問題