クラスは遅かれ早かれ実行する必要があるため、基本クラスにチェックメカニズムを追加して、サブクラスに特定の属性が存在することを確認できます。
ここにあなたのためのいくつかのサンプルコードがあります。
class Program
{
static void Main(string[] args)
{
var a = new SubA();
var b = new SubB();
}
}
class BaseClass
{
public BaseClass()
{
Type t = GetType();
if (t.IsDefined(typeof(SerializableAttribute), false) == false)
{
Console.WriteLine("bad implementation");
throw new InvalidOperationException();
}
Console.WriteLine("good implementation");
}
}
[Serializable]
class SubA : BaseClass
{ }
class SubB : BaseClass
{ }
最後の言葉は、自分自身をあまり警戒しないでください。設計をしていると、2つのメソッドを間違った順序で呼び出すか、何かをするのを忘れるかもしれないといつも思っていました。それから、起こりうる間違いを防ぐために、単純な設計を複雑な設計に変えました。後で私は警備員を捨て、例外を投げるだけで、予期しない状況を検出するために使用されるコードはで囲まれていました#if DEBUG
。