В основном вам нужно использовать Reflection. Используйте Activator.CreateInstance()
для создания вашего типа, а затем вызовите InvokeMember()
для типа, чтобы установить свойство:
public void CreateInstanceOfType(Type t)
{
var instance = Activator.CreateInstance(t); // create instance
// set property on the instance
t.InvokeMember(
"foo", // property name
BindingFlags.SetProperty,
null,
obj,
new Object[] { "bar" } // property value
);
}
Чтобы получить доступ ко всем свойствам универсального типа и установить / получить их, вы можете использовать GetProperties()
, который возвращает коллекцию PropertyInfo
, которую вы можете перебирать:
foreach (PropertyInfo property in type.GetProperties())
{
property.GetValue() // get property
property.SetValue() // set property
}
Также, смотрите документацию , чтобы узнать больше способов использования InvokeMember()
.