2013-02-19 5 views
0

У меня есть интерфейс iExportColumn и класс ExportColumn, реализующий interfce. Класс ExportColumnCollection должен быть общим для всех классов, реализующих интерфейс IExportColumn.Contra дисперсия с интерфейсами

public interface IExportColumn 
{ 
    string Header { get; set; } 
    string ColumnName { get; set; } 
} 

public class ExportColumn : IExportColumn 
{ 
    public ExportColumn(){} 
    public string Header { get; set; } 
    public string ColumnName { get; set; } 
} 

public class ExportColumnCollection<T> where T: IExportColumn 
{ 
    private List<T> cols; 

    public ExportColumnCollection (List<T> c) 
    { 
     cols = c; 
    } 

    public T Columninfo (string colname) 
    { 
    } 
     ..... 
} 

Я получаю ошибку времени выполнения, говоря, что не могу загрузить тип ExportColumnCollection.

Я ищу что-то, чтобы достичь Somthing как List<IExportColumn> = new List<ExportColumn>();

У меня есть два класса, реализующие интерфейсы IExportColumn и мне нужно держать GenericCollection обрабатывать Перечислите

+1

Почему вы не используете 'List ' в 'ExportColumnCollection'? Это кажется самым простым подходом ... –

+0

Thats my error .. Я использую ниже открытый класс ExportColumnCollection где T: IExportColumn {private List cols; public ExportColumnCollection (Список c) {cols = c; } public T Columninfo (string colname) {} .....} – vonbalaji

+1

Написание кода в комментариях обычно не пригодится - особенно если вы не указали текст, чтобы объяснить, почему вы это делаете ... –

ответ

0

Правильное использование для вашего класса будет выглядеть так:

List<IExportColumn> list= new List<IExportColumn>(); 
// you may add to the collection any class which implements IExportColumn 
list.Add(new ExportColumn1() { ColumnName = "Id" }); 
list.Add(new ExportColumn2() { ColumnName = "Value" }); 

ExportColumnCollection<IExportColumn> collection = new 
    ExportColumnCollection<IExportColumn>(list); 
var colInfo = collection.ColumnInfo("Id"); 
+0

Спасибо Alex. я даю ему попробовать .. – vonbalaji

+0

Спасибо. У меня возникла проблема с сборкой из-за ссылки, которая заставила меня изучить некоторые другие варианты .. но теперь все разобрались .. спасибо – vonbalaji

Смежные вопросы