c# - que - Clase con indexador y propiedad llamada "Item"
indexer que es (3)
Basado en este sitio , es posible usar un atributo para cambiar el nombre del Indizador
public class MyClass
{
public object Item { get; set; }
[System.Runtime.CompilerServices.IndexerName("MyItem")]
public object this[string index] { get { return null; } set { } }
}
¿Es posible crear una clase en .NET 4 con:
- un indexador,
- una propiedad llamada "Item"?
Por ejemplo, esta clase de C # no se compilará para mí:
public class MyClass
{
public object Item { get; set; }
public object this[string index] { get { return null; } set { } }
}
El compilador da un error CS0102 :
El tipo ''MyClass'' ya contiene una definición para ''Item''
aunque solo estoy definiendo explícitamente el Item
una vez.
C # crea internamente una propiedad llamada Item
para los idiomas que no admiten el indexador. Puede controlar este nombre utilizando el IndexerNameAttribute , como este:
[IndexerName("MyIndexer")]
public object this[string index]
{
get { return blah; }
}
Si recuerdo correctamente, se puede acceder a dicho indexador desde VB.Net a través de un método "Item ()". Ahí es de donde viene ese "definido dos veces".