我對C#中的反射很新穎。我想創建一個特定的屬性,我可以使用我的字段,所以我可以通過它們全部並檢查它們是否已正確初始化,而不是每次爲每個字段寫入這些檢查。我認爲這將是這個樣子:通過具有特定屬性的字段進行迭代
public abstract class BaseClass {
public void Awake() {
foreach(var s in GetAllFieldsWithAttribute("ShouldBeInitialized")) {
if (!s) {
Debug.LogWarning("Variable " + s.FieldName + " should be initialized!");
enabled = false;
}
}
}
}
public class ChildClass : BasicClass {
[ShouldBeInitialized]
public SomeClass someObject;
[ShouldBeInitialized]
public int? someInteger;
}
(您可能注意到,我打算用它Unity3d,但沒有什麼具體到Unity在這個問題上 - 或者至少,它似乎很給我)。這可能嗎?
是否System.Attribute.IsDefined (FieldInfo,Type)是否統一? – 2013-03-25 17:28:32
是的,它的確如此。謝謝 - 我認爲我可以通過谷歌我的出路,但仍然不完全確定如何使用它... – 2013-03-25 17:32:09