我正在尝试创建这种通用方法来简化事情,但我想我搞砸了!你能帮我解决我的问题吗?
这编译:
private string ConcatenateText<T1, T2>(MyEntity myEntity)
where T1 : Supplier, new()
where T1 : Employee, new()
where T2 : SupplierDepartment, new()
where T2 : EmployeeDepartment, new()
{
T1 p = new T1();
T2 r = new T2();
//Code here for myEntity treatment
return mystring;
}
虽然这不会编译:
protected void mybutton1_Click(object sender, EventArgs e)
{
string mystring = ConcatenaText<Supplier, SupplierDepartment>(myEntity);
}
//This does not compile
protected void mybutton2_Click(object sender, EventArgs e)
{
string mystring = ConcatenaText<Employee, EmployeeDepartment>(myEntity);
}
消息:类型 Supplier 不能用作泛型类型或方法 ConcatenateText(MyEntity myEntity) 中的类型参数 T1。没有从供应商到员工的隐式引用转换
这可以做到吗?我究竟做错了什么?可以改进吗?
编辑:
而 MyEntity 只是另一个类,以便在这个通用方法中处理它!它与类型 T 无关。它只是一个参数。但很明显,我不能这样做,使用 2 种这样的类型。我认为我可以分配一个或另一个,独立于我的初始化的 CLR 可以按照我的意愿做出反应。我会接受分享更多信息的答案。