Если значения не имеют ничего общего с типом базового базового класса, то они не должны быть в базовом базовом классе. Они должны быть либо в совершенно отдельном классе, либо в неуниверсальном базовом классе универсального класса.
Имейте в виду, что для статических переменных вы получаете разные статические переменные для каждого типа аргумента:
using System;
public class GenericType<TFirst, TSecond>
{
// Never use a public mutable field normally, of course.
public static string Foo;
}
public class Test
{
static void Main()
{
// Assign to different combination
GenericType<string,int>.Foo = "string,int";
GenericType<int,Guid>.Foo = "int,Guid";
GenericType<int,int>.Foo = "int,int";
GenericType<string,string>.Foo = "string,string";
// Verify that they really are different variables
Console.WriteLine(GenericType<string,int>.Foo);
Console.WriteLine(GenericType<int,Guid>.Foo);
Console.WriteLine(GenericType<int,int>.Foo);
Console.WriteLine(GenericType<string,string>.Foo);
}
}
Звучит так, как будто вы не действительно хотите другую статическую переменную для T
вашего базового класса - так что вы не можете иметь ее в вашего базового класса .