我定义一个结构:
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定义为类而不是结构,则该值将按预期设置。
是否可以使用反射设置结构属性?