我对 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 的内容 - 或者至少在我看来是这样)。这可能吗?