Я определяю структуру:
public struct Settable
{
public string SettableProperty { get; set; }
}
Я могу установить значение свойства структуры обычным способом:
s.SettableProperty = "Abc";
Однако, когда я создаю метод для попытки установите свойство по отражению:
public T CreateWithValue<T>(string propName, string propValue)
{
var retObj = Activator.CreateInstance<T>();
var prop = typeof(T).GetProperty(propName);
var _ = prop.SetMethod.Invoke(retObj, new object[] { propValue});
return retObj;
}
... и назовите его так:
var x = CreateWithValue<Settable>("SettableProperty", "Abc");
... В итоге SettableProperty
инициализируется значением по умолчанию, null
. (Никаких исключений не выдается.)
Обратите внимание, что если я определю Settable как class вместо struct , значение будет установлено как ожидается.
Можно ли задать свойства структуры с помощью отражения?