У меня есть следующая иерархия классов:
public class Row : ICloneable, IComparable, IEquatable<Row>,
IStringIndexable, IDictionary<string, string>,
ICollection<KeyValuePair<string, string>>,
IEnumerable<KeyValuePair<string, string>>,
System.Collections.IEnumerable
{ }
public class SpecificRow : Row, IXmlSerializable,
System.Collections.IEnumerable
{
public void Add(KeyValuePair<MyEnum, string> item) { }
}
Однако попытка сделать следующее выдает ошибку:
var result = new SpecificRow
{
{MyEnum.Value, ""},
{MyEnum.OtherValue, ""}
};
Я получаю эту ошибку:
Лучший перегруженный метод Add 'Row.Add (string, string)' для инициализатора коллекции имеет недопустимые аргументы
Как сделать так, чтобы при использовании инициализатора объекта в производном классе SpecificRow
допускался тип MyEnum
? Похоже, он должен увидеть метод Add
в SpecificRow
.
Обновление: Я реализовал дополнительный интерфейс на SpecificRow
, теперь он выглядит так:
public class SpecificRow : Row, IXmlSerializable,
System.Collections.IEnumerable,
ICollection<KeyValuePair<MyEnum, string>>
{ }
Тем не менее, я все еще получаю ту же ошибку Add
. Я собираюсь попробовать реализовать IDictionary<MyEnum, string>
далее.