您想设置UserName
属性的ClientCredentials.UserName
属性,这使它有些混乱。但是,很容易将其封装到一个方法中:
ClientCredentials CreateClientCredentials(String userName, String password) {
var clientCredentials = new ClientCredentials();
clientCredentials.UserName.UserName = userName;
clientCredentials.UserName.Password = password;
return clientCredentials;
}
此语法不是您可以更改的。ClientCredentials
类和相关类型是这样设计的。
如果您真的想“修改”语法,一个选项是使用扩展方法创建一个流畅的 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");