Моя проблема может быть упрощена до List <> с координатами X и Y, который я хотел бы сгруппировать в интерфейс или абстрактный класс.Затем у меня есть куча других функций, которые принимают этот абстрактный класс в качестве аргумента.Предостережение в том, что элемент X имеет числовой характер или является датой-временем.Вот пример кода, чтобы проиллюстрировать, что я пытаюсь сделать:
//C# 4.0
abstract class Element : Group<DateTime, double>
{
public DateTime X {get; set;}
public double Y {get; set;}
}
public interface Group<T, U>
{
public T X {get; set;}
public U Y {get; set;}
}
void OtherObject.Do(List<Group<DateTime, double>> elm)
{
double[] X = 0;
for (int i = 0; i < elm.Count; i++)
{
if (elm[i].GetType() == typeof(DateTime))
{
X[i] = ((DateTime)elm[i].X).TOADate();
{
else
{
X[i] = elm.X;
}
}
//Other stuff
}
static Main()
{
List<Element> list = FactoryCreate();
OtherObject obj = new OtherObject();
obj.Do(list);
}
Я хотел бы иметь возможность указать аргумент List<Group<DateTime, double>>
для Do()
без указания общих типов.Я просто хотел бы иметь возможность сделать Do(List<Group> lst)
.
Я мог бы просто исключить параметры универсального типа и использовать динамический тип данных в Группе, но я не думаю, что это лучший способ.
Существует ли установленный шаблон для решения этой проблемы?Я на 100% открыт для предложений относительно правильного способа моделирования этой структуры данных / класса.