При указании типа необходимо указать параметры c generi:
new GenericClass<T>(t1, t2)
Причина этого в том, что параметры типа не могут быть выведены для классов, только для методов. Вы можете использовать это, написав фабрику:
static class GenericClassFactory
{
public static GenericClass<T> Create(T t1, T t2)
{
return new GenericClass<T>(t1, t2);
}
}
Теперь вы можете:
var foo = GenericClassFactory.Create(1, 2);
И T
будет выведено компилятором.
Кроме того, список должен иметь правильный тип:
var genericList = new List<GenericClass<T>>();
Если вам нужно сохранить список как переменную-член, вам нужно будет продвигать тип generi c на уровень класса, а не уровень метода:
class Foo<T>
{
private readonly List<GenericClass<T>> genericList = new List<GenericClass<T>>();
public void AddGenericValue(T t1, T t2)
{
for (int i = 0; i < genericList.Count; i++)
{
if (genericList[i].t1 == t1)
{
genericList[i].t2 = t2;
return;
}
}
genericList.Add(new GenericClass<T>(t1, t2));
}
}