Я задал этот вопрос вчера и получил много хороших ответов, только я понял, что мой вопрос был неправильным, и здесь я хочу перефразировать его.
У меня есть этот интерфейс
public interface IFoo<T>
{
T Value();
}
С этими членами
public class Bar : IFoo<string>
{
string Value(){return "test";}
}
public class Bar2 : IFoo<int>
{
int Value(){return "1";}
}
Это работает отлично, но теперь я хочу создать класс, у которого есть свойство, которое может быть либо Bar, либо Bar2, вот так
public class Test
{
IFoo test;
}
Только это не скомпилируется, потому что Ifoo должен иметь универсальный тип. Только я заранее не знаю, буду ли я использовать Bar2 или Bar.
Я надеюсь, что объяснил это хорошо, но если нет, я постараюсь прояснить это.
Explaination
Я пытаюсь (просто ради интереса) создать API Dicom (медицинские изображения и т. Д.). Частью стандарта dicom являются некоторые ValueRepresentations (VR). Это типы, которые используются для хранения (мета) информации об изображении.
Например, такие VR: AgeString, Date, UnsignedShort, SequenceOfItems.
Для всех этих VR я хочу иметь некоторые методы, которые все они должны реализовать (кодирование и т. Д.). Но я все хочу, чтобы они могли хранить ценность. Является ли это Int, или DateTime, или String, это не должно быть помещено в интерфейс?