Список разных типов, основанных на одной и той же проблеме интерфейса C # - PullRequest
1 голос
/ 16 марта 2011

Я хотел бы создать интерфейс, который я могу использовать с различными типами. Как таблица, в которой столбцы могут быть разных типов, например, Integer, String, Date.

Следующие статьи оказали большую помощь.

ListBox, список различных объектов, реализующих один и тот же интерфейс

Список двух разных типов в C #

У меня проблема в том, что мне все еще нужен общий интерфейс, который может обрабатывать различные типы данных. Как я могу обойти это?

Могу ли я просто сохранить главное хранилище интерфейса в виде строки и преобразовать все типы в и из?

interface IMytype
{
    string Item { get; set; }
}

class Myint : IMember
{
    public int Item { 
                 get; // code here  IMytype.Item (get) then convert to int
                 set; //  code here to convert to string then IMytype.Item (set) 
                }
}

Пример

IMytype testint = new MyInt();

testint.Item = 10;

List<IMytype> testlist = new List<IMytype>();

testlist.add(testint);

Я на правильном пути?

1 Ответ

2 голосов
/ 16 марта 2011

Интерфейс - это контракт, в котором указывается, какое поведение будет обеспечивать этот класс.Он не не должен указывать, какие данные будет содержать класс.

Вы хотите создать список объектов, которые соответствуют определенному контракту - вы хотите, чтобы все они вели себя определенным образом,Вас смущает тот факт, что все эти классы будут иметь различное внутреннее представление - некоторые представляют целые числа, другие могут представлять числа с плавающей запятой и т. Д.реализовать.Это сформирует основу вашего интерфейса.

Таким образом, вы хотите иметь возможность получить строковое представление данных.Это один из методов для вашего интерфейса.

Вы хотите, чтобы класс мог получать строку и преобразовывать ее во внутренний тип?Есть еще один метод.

Нужны ли эти типы для намотки конденсатора Flux?

Есть ваш интерфейс.

interface IMytype
{
    string GetStringValue ();
    void ReadString ( string value);
    bool WangleFluxCapacitor();
}

Сначала подумайте о совместном поведении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...