>>>>I create it like this at the moment >>>> >>>>if(some condition) >>>> XLToList(MyClass) xlist = new XLToList(MyClass)(); >>>>else >>>> XLToList(MyOtherClass) xlist2 = new XLToList(MyOtherClass)(); >>>> >>>> >>>>public class XlToList(T) where T : ITariffDataImport, new() >>>> { >>>> public delegate void Notify(object sender, CSVEventargs e); >>>> public delegate void NotifyEveryRecord(int RecordNumber); >>>> public event Notify OnFinishedProcessing; >>>> public event Notify OnFoundBadTariff; >>>> public event Notify OnFoundStartingRow; >>>> public event NotifyEveryRecord OnProcessingRecords; >>>> >>>> >>>> private Type thistype = typeof(T); >>>> >>>> private List(T) data; >>>> >>>> public List(T) Data >>>> { >>>> get >>>> { >>>> return data; >>>> } >>>> set >>>> { >>>> data = value; >>>> } >>>> } >>>>>>>>
>>> static class Test_GenericInterface >>> { >>> internal static void Go() >>> { >>> List<ITest> xlist; >>> >>> if (true) >>> xlist = new XlToList<ClassA>().Data; >>> else >>> xlist = new XlToList<ClassB>().Data; >>> >>> } >>> >>> } >>> public class XlToList<T> where T : ITest, new() >>> { >>> public delegate void NotifyEveryRecord(int RecordNumber); >>> public event NotifyEveryRecord OnProcessingRecords; >>> >>> >>> private Type thistype = typeof(T); >>> >>> private List<ITest> data; >>> >>> public List<ITest> Data >>> { >>> get >>> { >>> return data; >>> } >>> set >>> { >>> data = value; >>> } >>> } >>> public XlToList() >>> { >>> data = new List<ITest>(); >>> data.Add( (ITest)new T()); >>> } >>> } >>> public interface ITest >>> { >>> int Get(); >>> } >>> public class ClassA : ITest >>> { >>> >>> public int Get() >>> { >>> return 1; >>> } >>> >>> } >>> public class ClassB : ITest >>> { >>> >>> public int Get() >>> { >>> return 3; >>> } >>> } >>>But you're can't assign a List of ClassA to xlist.Data can you ?