Mam następujące klasy Hierarchia:C# inicjator obiektu chcąc skorzystać źle Dodaj metodę
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) { }
}
jednak, starając się wykonać następujące czynności daje błąd:
var result = new SpecificRow
{
{MyEnum.Value, ""},
{MyEnum.OtherValue, ""}
};
otrzymuję ten błąd:
The best overloaded Add method 'Row.Add(string, string)' for the collection initializer has some invalid arguments
Jak mogę to zrobić, aby za pomocą inicjalizatora obiektu w klasie pochodnej SpecificRow
a pufy typu MyEnum
? Wygląda na to, że powinien on zobaczyć metodę Add
w SpecificRow
.
Aktualizacja: I wdrożone dodatkowy interfejs na SpecificRow
tak to teraz wygląda następująco:
public class SpecificRow : Row, IXmlSerializable,
System.Collections.IEnumerable,
ICollection<KeyValuePair<MyEnum, string>>
{ }
Jednak wciąż otrzymuję ten sam Add
błąd. Zamierzam teraz spróbować wprowadzić IDictionary<MyEnum, string>
.
@JonH: nieprawidłowe, pojawi się komunikat o błędzie informujący, że " najlepsze przeciążenie ", które można znaleźć dla danej witryny wywołania to Add (ciąg, ciąg), a to nie pasuje do argumentów faktycznie przekazywanych. –