属性如果我有这样的变化值在运行时
[Attr("Blah",
Data = "Blah")]
public class Test : SuperClass{}
一类是有办法,我可以在运行时更改类的实例的属性值?例如,在伪代码
SuperClass test = new Test();
test.Attr.Value = "blah1";
test.Attr.Data = "blah2";
(我有我想改变的属性,投它延伸类的类的实例)
属性如果我有这样的变化值在运行时
[Attr("Blah",
Data = "Blah")]
public class Test : SuperClass{}
一类是有办法,我可以在运行时更改类的实例的属性值?例如,在伪代码
SuperClass test = new Test();
test.Attr.Value = "blah1";
test.Attr.Data = "blah2";
(我有我想改变的属性,投它延伸类的类的实例)
有属性和对象实例之间不存在隐式连接。只在类和属性之间。最好的办法是在构造函数中查找属性,然后“缓存”对象属性中的值。当然,如果仅查看Test
类,那么这是没有意义的,但如果SuperClass
的构造函数在使用“this.GetType()”检索的类型上查找自定义属性,那么这是没有意义的。
不可能。好吧。 – UberMouse 2013-03-13 02:52:54
您可以在类级别运行时改变属性值(不是对象实例级):
var attr = TypeDescriptor.GetProperties(typeof(UserContact))["UserName"].Attributes[typeof(ReadOnlyAttribute)] as ReadOnlyAttribute;
attr.GetType().GetField("isReadOnly", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(attr, username_readonly);
[更改属性的运行时参数(的
这是设置属性的属性,如果类(“UserName”),而不是在类(“UserContact”)。 问题是设置类属性的值。 – 2015-09-30 11:54:05
可能重复http://stackoverflow.com/questions/51269/ change-attributes-parameter-at-runtime) – 2013-03-13 00:39:06
我已经看过,那些是方法属性,类属性看起来不一样。至少这个问题并没有帮助我。 – UberMouse 2013-03-13 00:51:52
我很肯定你可以在运行时改变它们,因为它们被嵌入到程序集的元数据中。 – 2013-03-13 01:03:03