Я пытаюсь сделать это:производный интерфейс от общего метода
public interface IVirtualInterface{ }
public interface IFabricationInfo : IVirtualInterface
{
int Type { get; set; }
int Requirement { get; set; }
}
public interface ICoatingInfo : IVirtualInterface
{
int Type { get; set; }
int Requirement { get; set; }
}
public class FabInfo : IFabricationInfo
{
public int Requirement
{
get { return 1; }
set { }
}
public int Type
{
get {return 1;}
set{}
}
}
public class CoatInfo : ICoatingInfo
{
public int Type
{
get { return 1; }
set { }
}
public int Requirement
{
get { return 1; }
set { }
}
}
public class BusinessObj
{
public T VirtualInterface<T>() where T : IVirtualInterface
{
Type targetInterface = typeof(T);
if (targetInterface.IsAssignableFrom(typeof(IFabricationInfo)))
{
var oFI = new FabInfo();
return (T)oFI;
}
if (targetInterface.IsAssignableFrom(typeof(ICoatingInfo)))
{
var oCI = new CoatInfo();
return (T)oCI;
}
return default(T);
}
}
Но получаю ошибку компилятора: Canot преобразовать тип «GenericIntf.FabInfo» Т
Как это исправить?
благодаря Sunit
Спасибо .. но это ограничило бы тип реализации. Я хочу ограничить интерфейс и вернуть его. ответить, Ли, я не использую экспрессивные публичные методы, так как я не хочу иметь n таких методов, как GetFabricationInfo(), GetConstructionInfo() и т. д., которые заполнят Intellisense. – Sunit
Я расширил свой ответ –