tengo la siguiente jerarquía de clases:C# inicializador de objeto que deseen utilizar equivocada Añadir método
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) { }
}
Sin embargo, tratando de hacer lo siguiente da un error:
var result = new SpecificRow
{
{MyEnum.Value, ""},
{MyEnum.OtherValue, ""}
};
consigo este error:
The best overloaded Add method 'Row.Add(string, string)' for the collection initializer has some invalid arguments
¿Cómo puedo hacerlo de modo que el uso de un inicializador de objeto en la clase derivada de una SpecificRow
llows tipo MyEnum
? Parece que debería ver el método Add
en SpecificRow
.
Actualización: que implementan una interfaz adicional en SpecificRow
por lo que ahora se ve así:
public class SpecificRow : Row, IXmlSerializable,
System.Collections.IEnumerable,
ICollection<KeyValuePair<MyEnum, string>>
{ }
Sin embargo, sigo teniendo el mismo error Add
. Voy a intentar implementar IDictionary<MyEnum, string>
a continuación.
@JonH: incorrecta, el mensaje de error que indica que el " mejor sobrecarga "que se puede encontrar para el sitio de llamada dado es Agregar (cadena, cadena), y esto no coincide con los argumentos que realmente se pasan. –