У меня есть такие интерфейсы и реализации:
public interface IRequest
{
string Name{set;get;}
}
public class UppercaseRequest: IRequest
{
public string Name{get; set}
}
public interface IHandler<T> where T: IRequest
{
void Handle(T request);
}
public class UpperCaseHandler : IHandler<UpperCaseRequest>
{
//implementation interface here
}
И фабрика, подобная этой:
public class HandlerFactory
{
public IHandler<T> CreateHandler(T request) where T: IRequest
{
switch(request.Name)
{
case "UpperCase": return new UpperCaseHandler() as IHandler<T>;
//this line compile but always return null;
}
}
}
Этот метод обработчика в HandlerFactory
всегда возвращает null. Что я делаю не так и как исправить такое поведение? Не могли бы вы также дать мне совет, как я могу улучшить структуру кода?