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