Ищите шаблон дизайна в C # для строго типизированного списка - PullRequest
2 голосов
/ 16 августа 2010

Я моделирую список строго типизированных ключей базы данных.Некоторые будут целочисленными, некоторые строки, некоторые направляющие и т. Д.

РЕДАКТИРОВАТЬ Они строго типизированы в том смысле, что некоторые ключи будут содержать целочисленные значения, некоторые строки, некоторые идентификаторы и т. Д.

Итакесли мой класс для Key был "Key", а мой список был List<Key>, я искал, как реализовать строго типизированный аспект.Я не хочу использовать дженерики, так как не думаю, что они здесь уместны (хотя докажите, что я не прав).

Я думаю о создании "Key" и абстрактного класса, а также о том, чтобы каждый подкласс реализовывал строго типизированныйаспект.Но это тоже будет грязно.(см. ниже)

У кого-нибудь есть идеи получше?

public abstract class RowKey
{
    public string DbName { get; set; }

    public abstract object GetTypedValue();
}

public class IntegerRowKey: RowKey
{
    public override object GetTypedValue()
    {
        return 1;
    }
}

1 Ответ

2 голосов
/ 16 августа 2010

Почему вы думаете, что дженерики здесь неуместны? Они были в значительной степени изобретены для этого сценария:

public class RowKey<T>
{
    public string DbName { get; set; }
    public T GetValue():
}
// Now use RowKey<int>, RowKey<string>, RowKey<Guid>, etc.

Наличие абстрактного базового класса, который возвращает object, разрушает саму идею строгой типизации, не так ли?

edit: ах, я вижу, к чему вы клоните. Посмотрите на этот вопрос.

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