【发布时间】:2021-10-21 09:50:48
【问题描述】:
我有一个泛型方法,它采用类型 T 的 sapclient 方法,但是当我想初始化它时,它初始化为对象而不是实际的类。如何初始化它并根据需要传递用户名和密码?
public static Auth<T>(string username, string password) where T : new()
{
T client = new T(binding, endpointAddress)
client.ClientCredentials.UserName.UserName = username
client.ClientCredentials.UserName.Password = password
}
我尝试了该代码,但它总是给出错误提示
无法创建变量类型“T”的实例
【问题讨论】:
-
没有反射没有简单的方法来实现这一点。您可以使用带有
Create方法的接口或将Func<T, string, string>传递给该方法以在外部创建T吗?当然,还有其他方法,具体取决于您的限制 -
泛型类型参数的目的是什么?
T的可能值是多少?我可以打电话给Auth<string>(uid,pwd)吗? -
目前无法在 C# 中完成。构造函数的无参数形式是当前
newconstraint 支持的唯一形式。有多种变通方法,但要帮助您找出最合适的变通方法,需要对您的应用程序有更多了解。该解决方案可能涉及重构您的代码以使用工厂等。 -
您的方法缺少返回类型