Я пытаюсь создать этот общий метод для упрощения, но, думаю, я испортил его! Можете ли вы помочь с моей проблемой?
Это компилируется:
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);
}
Сообщение: Поставщик типа не может использоваться как параметр типа T1 в общем типе или методе ConcatenateText (MyEntity myEntity). Нет никакого неявного преобразования ссылок от Поставщика к Сотруднику
Можно ли это сделать? Что я делаю не так? Можно ли улучшить?
EDIT:
И MyEntity - это еще один класс, чтобы обработать его внутри этого общего метода! Это не связано с типами Т. Это просто аргумент. Но ясно, что я не могу этого сделать, используя 2 типа. Я думал, что могу назначить то или другое, и CLR независимо от моей инициализации может реагировать так, как я хотел. Я собираюсь принять ответ, который делится немного дополнительной информацией об этом.