Ответ 1
Поскольку ваш класс должен запускаться рано или поздно, вы можете добавить механизм проверки в свой базовый класс, чтобы проверить существование определенных атрибутов в ваших подклассах.
Вот пример кода для вас.
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
{ }
Последнее слово, не будьте слишком осторожны с самим собой. Когда я делал свой проект, я всегда думал, что могу назвать два метода в неправильном порядке или забыть что-то сделать, затем я превратил простой дизайн в сложный, чтобы предотвратить возможные ошибки. Позже я выбросил охранников, просто выбросив Исключения и код, используемый для обнаружения неожиданных ситуаций, был окружен #if DEBUG
.