UserName
プロパティのプロパティを設定したいのでClientCredentials.UserName
、多少混乱します。ただし、これをメソッドにカプセル化するのは簡単です。
ClientCredentials CreateClientCredentials(String userName, String password) {
var clientCredentials = new ClientCredentials();
clientCredentials.UserName.UserName = userName;
clientCredentials.UserName.Password = password;
return clientCredentials;
}
この構文は変更できるものではありません。ClientCredentials
クラスと関連するタイプはこのように設計されました。
構文を本当に「変更」したい場合、1つのオプションは、拡張メソッドを使用して流暢なAPIを作成することです。これにより、状況によっては、コードに小さな埋め込みDSLを作成できます。この特定のケースでは、良い解決策はないと思いますが、インスピレーションとして、ここにいくつかの拡張メソッドを提供します。
public static class ClientCredentialsExtensions {
public static ClientCredentials WithUserName(
this ClientCredentials clientCredentials, String userName) {
// Argument checking omitted.
clientCredentials.UserName.UserName = userName;
return clientCredentials;
}
public static ClientCredentials WithPassword(
this ClientCredentials clientCredentials, String password) {
// Argument checking omitted.
clientCredentials.UserName.Password = password;
return clientCredentials;
}
}
その後、次のように使用できます。
var clientCredentials = new ClientCredentials()
.WithUserName("username")
.WithPassword("password");
しかし、私はそれがこれより良いとは思いません:
var clientCredentials = new CreateClientCredentials("username", "password");