値がジェネリックベースクラスの型と関係がない場合、ジェネリックベースクラスに属している必要はありません。それらは、完全に別のクラス、またはジェネリッククラスの非ジェネリックベースクラスのいずれかでなければなりません。あなたはが本当にがあなたのジェネリックのT
ごとに異なる静的変数を使用しないように
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);
}
}
ですね:静的変数のために、あなたは型引数の組み合わせごとに異なる静的変数を取得することを念頭に置いて
ベアベースクラス - だからのジェネリックベースクラス。
既に指摘されているように非ジェネリックベースクラスを唯一の方法として扱うのとは別に、単にハックではなく、実際にそれを行う正しい方法であることを付け加えたいと思います。 –