>>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 ?