Я пытаюсь создать метод generics. Я хочу, чтобы вызывающий мог определить два разных типа.Метод создания экземпляра дженериков Тип
private TableRow AddRowHelper<TROW, TCELL>(params string[] content) where TROW : TableRow where TCELL : TableCell
{
TableRow row = new TROW();
foreach (var text in content)
{
TableCell cell = new TCELL();
cell.Text = text;
row.Cells.Add(cell);
}
productsTable.Rows.Add(row);
return row;
}
Код, приведенный выше, дает мне ошибку.
Ошибка 4 Не удается создать экземпляр переменного типа «TRow», потому что он не имеет новое() ограничения»
Можно указать как new
и базовый тип ограничения? И почему мне нужно новое ограничение, когда я указал, что тип должен быть производным от TableRow
, который всегда имеет new
оператора.
Представьте себе тип, похожий на открытый класс ChildOfTrow: TROW {private ChildOfTrow() {}} –
Что вы подразумеваете под «TableRow всегда есть« новый »оператор? – haim770
Да, * Можно указать как новое, так и базовое ограничение: 'где TROW: TableRow, new()'. – haim770