已創建一些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