私は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に固有のものは何もありません。少なくとも、私にはそう思われます)。これは可能ですか?