わかりました、私は私の質問をもう少しよく説明しようとします:私は
class DynamicTypeCreator{...}
そしてその中のメソッド:
static BuildASingletonClassWithTypeBuiler<T> (T object) {...}
このメソッドは、シングルトンタイプを作成するだけではありません
class Singleton01<K> {...}
だけでなく、それをインスタンス化し、フィールドを定義します
static Singleton01<K> instance = new Singleton01<K> (K object)
と別のフィールド
static Type typeOfGenericParameter = typeof(K)
。
(https://github.com/TThaan/ExtensionPropertiesForCSharpの実際のコードは異なりますが、それは問題ではありません。)
ただし、このメソッドはシングルトンタイプもインスタンスも返しません。それらを作成しているだけです。
実際、タイプの名前をSingleton01からSingleton02、Singleton03などに変更するだけで、毎回異なるT object
パラメーターを使用することがよくあります。
したがって、後でこれらのシングルトンの1つにアクセスしたい場合、それがどのオブジェクトを保持し、どのタイプであるかがわかりません。たとえば「Singleton03」の静的フィールドの値を取得するには、最初に使用します
Type type = AssemblyBuilder.GetType("Singleton03")
。
静的フィールドの値を取得しようとしても、まだ機能せず、nullになっています。使わざるを得ないようです
Type genericType = type.MakeGenericType(new[] { typeof(T) })
。
しかし、これが機能するためには、パラメータのタイプをすでに知っている必要がありますT object
。
を使用する前に、そのようなジェネリック型の静的フィールドの値を取得する方法があるかどうかを知りたいです.MakeGeneric()
。
私は今答えを見つけました。
あるタイプのジェネリッククラスは実際には別のタイプの「同じクラス」と
は異なるクラスであるため、これらのクラスの1つの静的フィールドは他のクラスの静的フィールドとは異なります。したがって.MakeGeneric()
、フィッティングタイプで使用する前に、これらのフィールドの1つの値を取得することはできません。
解決策は、クラスの作成を変更することです。たとえば、次のようになります。ジェネリッククラスと静的フィールド。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加