На данный момент у меня есть абстрактный класс со свойством этой подписи:Действие словарь ожидать Тип это ключ
protected virtual IDictionary<Type, Action<object>> InitializationMap
{
get
{
return null;
}
}
После продлен, я переопределить его, например, так:
protected override IDictionary<Type, Action<object>> InitializationMap
{
get
{
return new Dictionary<Type, Action<object>>
{
{ typeof(INewSchoolWizardExtension), o => ((INewSchoolWizardExtension)o).InitializeWizard(this) },
{ typeof(INewSchoolProcessExtension), o => ((INewSchoolProcessExtension)o).Start() }
};
}
}
Пока он работает, мне действительно не нравится роль литья, он действительно раздувает код.
Что я пытаюсь сделать здесь, это - определить карту инициализации для типов. Так сказать, как только они будут разрешены позже, я бы проверил тип того, что разрешается, и вызовет инициализатор.
Я думал сделать это с помощью дженериков, но не смог никуда добраться.
Как я могу реализовать поведение, так что Action
всегда будет ожидать тип его ключа?
Просто из любопытства - ваша собственность является «виртуальной» с тем, что кажется бессмысленной реализацией. Почему бы не сделать его «абстрактным»? – decPL
@decPL, потому что аннотация обязательна, не все классы нуждаются в ней. – jolt