Рассмотрим следующий сценарий:
Документ -> Раздел -> Тело -> Элементы
Документ имеет разделы, раздел содержит тело. В теле есть текст и список элементов. Items - это то, о чем идет речь. Иногда элементы представляют собой основной список строк, но иногда элементы содержат список настраиваемого типа данных.
Итак:
public class Document
{
public Section[] Sections{get;set;}
}
public class Section
{
public SectionType Type{get;set;}
public Body {get;set;}
}
public class Body
{
//I want the items to be depending on the section type.
//If e.g. the sectiontype is experience, I want the Items to be created with type //Experience. If sectiontype is default I want the Items to be created with type string
public Items<T> Items {get;set;}
}
public class Items<T>:IEnumerable, IEnumerator
{
// Do all the plumbing for creating an enumerable collection
}
public class Experience
{
public string Prop1{get;set;}
public string Prop2 {get;set;}
}
Я не могу заставить это работать. Для компиляции свойство Items должно быть определено типом. Я застрял здесь. Я могу легко это исправить, создав класс Section для каждого типа разделов, который я использую. Но дело в том, что весь остальной код такой же, и все операции над разделом будут такими же. Единственное отличие - это тип списка, используемого в Body.
Что для этого лучше всего. Я пробовал универсальные шаблоны, абстракцию и т. Д. Я могу заставить его работать, создав класс Items непосредственно из вызывающей программы, но я не могу заставить его работать, если Items объявлено свойством в другом классе.
Я могу предоставить больше подробности при необходимости. Спасибо вам, парни и девушки, за вашу поддержку.