Хорошо, я пытаюсь объяснить мой вопрос немного лучше: у меня есть
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
в качестве параметра.
Так что, когда я хочу получить доступ к одномуиз этих синглетонов позже я не знаю, какой объект он содержит и какого типа.Чтобы получить значение любого статического поля, например, в «Singleton03», я сначала использую
Type type = AssemblyBuilder.GetType("Singleton03")
.
Попытка получить значение статического поля теперь не работает, она просто нулевая.Кажется, я вынужден использовать
Type genericType = type.MakeGenericType(new[] { typeof(T) })
.
Но чтобы это работало, мне уже нужно знать тип моего параметра T object
.
Я хочу знать, есть ли способ получить значение статического поля в таком универсальном типеперед использованием .MakeGeneric()
.