Есть ли способ построить такой общий тип?Как создать общий тип из типа?
Type underlyingType = propertyInfo.PropertyType;
Type genericType = typeof(Action<underlyingType>);
Я знаю, что это будет невозможно. поэтому, чтобы получить обходные пути: я хочу создать делегат Action<T>
для setter некоторых свойств.
var type = propertyInfo.PropertyType;
var defaultVal = type.IsValueType ? Activator.CreateInstance(type) : null;
var setter = (Action<object>)propertyInfo
.GetSetMethod(true)
.CreateDelegate(typeof(Action<object>), this);
var resetter = new Action(() => setter(defaultVal));
return resetter;
Это не работает. потому что я должен пройти точный тип соответствия. Если свойство setter принимает двойной, я должен пройти Action<double>
, тогда он работает.
У меня есть общий тип контейнера и базовый тип в руке. как я могу их смешивать?
Обратите внимание, что я работаю на группы свойств, взятых из класса. не отдельное имущество.
var props = GetType().GetProperties(Flags);
Очень приятный и чистый подход. я буду отмечать это как ответ, потому что он отвечает на вопрос сам. (теперь у меня есть другой вопрос в том, что 'DynamicInvoke' лучше или' SetValue', или есть какие-то лучшие способы.) –