Общий список / словарь на основе свойства / параметра
Для начала, я реализовал обходной путь к этому вопросу, основанный на том, чтобы несколько приватных переменных хранили информацию и получали / устанавливали на затронутый объект.
Объем этих вопросов для изучения / ссылки.
Сценарий: у меня есть интерфейс, который управляет несколькими объектами (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 { }