屬性如果我有這樣的變化值在運行時
[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