interface IComponent { /*code*/ }
interface IContent : IComponent { /*code*/ }
interface IMedia : IComponent { /*code*/ }
class A : IContent { /*code*/ }
class B : IMedia { /*code*/ }
class C : IContent, IMedia { /*code*/ }
private static T GetComponent<T>(string itemTemplate)
where T : IComponent, new()
{
T component;
switch (itemTemplate)
{
case "template_1":
component = new A();
break;
case "template_2":
component = new B();
break;
case "template_3":
component = new C();
break;
default:
throw new ArgumentOutOfRangeException("itemTemplate");
}
return component;
}
Я получаю эти ошибки построения, где я создаю экземпляры производных типов:Дженерики не может преобразовать тип
Cannot implicitly convert type 'Objects.A' to 'T'
Cannot implicitly convert type 'Objects.B' to 'T'
Cannot implicitly convert type 'Objects.C' to 'T'
EDIT: Параметр ItemTemplate является имя шаблона в Sitecore Пункт.
Или еще лучше, вернуться IComponent –
@SteveCzetty: Действительно - я фактически не проверял эту часть вопроса. Будет редактировать. –
@JonSkeet Обновленный вопрос, чтобы ответить на ваш вопрос о состоянии –