У меня есть класс, как:C# Список неопределенных общих классов?
class GClass<T1, T2> {}
реализаций:
class CClass1<String, String> {}
class CCLass2<String, Double> {}
На моем C# код, который я должен был бы определить объект, как этот List<GClass<T1,?>
.
Возможно ли это?
С другой стороны, я проверил с List<GClass<String, Object>>
, однако я не могу добавить объект, как это:
List<GClass<String, Object>> list = new List<GClass<String, Object>>();
CClass1 c1 = new CClass1();
list.Add(c1);
Компилятор сбрасывает мне ошибку компиляции.
EDIT
Я проверил с ним:
public interface IViz<T, TQuery, out TOut>
{
Configuration.IVizConfiguration<T> VizConfiguration { get; }
IList<TOut> SelectedValues { get; }
IEnumerable<TQuery> generate(IEnumerable<T> search);
Expression<Func<T, bool>> generateExpression(Object selectedVizValue);
IEnumerable<Expression<Func<T, bool>>> generateExpressions(IEnumerable<Object> selectedVizValues);
}
Однако компилятор говорит мне:
Ошибка 3 Invalid дисперсия: Параметр типа 'Tout' должен быть инвариантно действующий на 'UI.Forms.SearchTool.Visualization.IViz.SelectedValues'. «TOUT» ковариантен. D: \ проекты \ живой \ клиентов \ NetClient \ UI \ Forms \ SearchTool \ Визуализация \ IViz.cs 8 42 UI
Можете ли вы описать ошибку компиляции? – badikumar
'CClass1 {}' что такое 'CClass1' и' CClass2'? –
Ian