如何在不知道泛型类型的情况下获得泛型类(singleton)中静态字段的值



好的,我试着更好地解释我的问题:我有一个

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不同,但这不应该引起关注。(
但是,此方法既不返回singleton类型,也不返回实例。它只是在创造它们
事实上,很多时候只将类型的名称从Singleton01更改为Singleton02、Singleton03等,每次都使用不同的T object作为参数
因此,当我稍后想要访问其中一个singleton时,我不知道它包含什么对象以及它是什么类型。要获得例如"Singleton03"中任何静态字段的值,我首先使用

Type type = AssemblyBuilder.GetType("Singleton03")

现在尝试获取静态字段的值还不起作用,它只是空的。我似乎被迫使用

Type genericType = type.MakeGenericType(new[] { typeof(T) })

但要使其工作,我已经需要知道参数T object的类型
我想知道在使用.MakeGeneric()之前,是否有一种方法可以获得这种泛型类型中静态字段的值。

我现在找到了答案
由于一个类型的泛型类实际上是另一个类型"同一类"的不同类,
其中一个类中的静态字段与另一个类的静态字段不同。因此,在使用具有拟合类型的.MakeGeneric()之前,我无法获得其中一个字段的值
解决方案是更改类的创建,例如:泛型类和静态字段。

最新更新