Общий список / словарь на основе свойства / параметра

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

Объем этих вопросов для изучения / ссылки.

Сценарий: у меня есть интерфейс, который управляет несколькими объектами (2 в этом примере).

interface Imoon
??? SomePropertyName {get;set;}

class Foo : Imoon
public TypeA SomePropertyName {get;set;}
public enumMyType TypeStorage {get;set}

class Bar : Imoon
public TypeB SomePropertyName {get;set;}
public enumMyType TypeStorage {get;set;}

Цель состоит в том, чтобы иметь возможность ссылаться на список / словарь / массив объектов, которые могут меняться по типу (подобно универсальному). Типы не влияют на логику, они разделены на отдельные обработчики и управляются там.

  • После объявления тип объекта не изменяется.

  • Тип одинаков для всех элементов в Enumerable, однако может меняться для разных объектов.

Пример объявления:

Dictionary<string,TypeA> myDictionary;
Dictionary<string,TypeB> myDictionary;

или в виде списка:

класс фу

List<TypeA> myValues
List<string> myKeys

Бар класса

List<TypeB> myValues
List<string> myKeys

Если у кого-то есть какие-либо предложения о том, как это реализовать, или предложения по улучшению, пожалуйста, дайте мне знать:)

1 ответ

Для архивации я смог достичь желаемого результата, используя общий интерфейс, как рекомендовано johnny5 выше. Я включил пример решения, и как реализовать его с заданным типом (TypeA), и это может быть сделано на TypeB также.

public interface ICollection<T>
{
    Dictionary<string,T> TypeDictionary { get; set; }
    void AddToDictionary(Dictionary<string,T> Addition
    int FileCount { get; }
}

public class TypeACollection : ICollection<TypeA>
{
    private Dictionary<string,TypeA> myTypeDictionary = new Dictionary<string, TypeA>();
    public void AddToDictionary(Dictionary<string, TypeA> Addition)
    {
        foreach (var keyValuePair in Addition)
        {
            TypeDictionary[keyValuePair.Key] = keyValuePair.Value;
        }
    }
    public Dictionary<string, TypeA> GetTypeDictionary()
    {
        return TypeDictionary;
    }

    private void ClearDictionary()
    {
        TypeDictionary.Clear();
    }

    public Dictionary<string, TypeA> TypeDictionary { 
         get {   return myTypeDictionary; } 
         set {   myTypeDictionary = value; } 
    }

    public int FileCount {get { return TypeDictionary.Keys.Count; }}
}
public class TypeA { }
public class TypeB { }
Другие вопросы по тегам