我对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