sirve - ¿Puedo especificar un nombre significativo para una clase anónima en C#?
tipos de namespace (10)
Todos sabemos que cuando creamos una clase anónima como esta:
var Employee = new { ID = 5, Name= "Prashant" };
... en tiempo de ejecución será de tipo:
<>f__AnonymousType0<int,string>
¿Hay alguna manera de especificar un nombre significativo para tales clases?
¿Hacer que sea una clase regular con un nombre?
public class Employee
{
public int ID;
public string Name;
}
var Employee = new Employee { ID = 5, Name= "Prashant" };
Como es anónimo, no puedes nombrarlo. Si necesita saber el nombre de un tipo, entonces realmente debe crear una clase.
Creo que, por definición, los Tipos Anónimos no pueden tener un nombre, solo el que el compilador le da. Si está buscando información más significativa sobre el tiempo de diseño en Tipos anónimos, entonces está esperando demasiado del compilador.
En realidad, si no tienes miedo de obtener un gran detalle, puedes usar TypeBuilder para crear tu propio tipo de tiempo de ejecución basado en tu tipo anónimo, lo que te permitirá especificar un nombre para el tipo. Por supuesto, es mucho más fácil declarar una clase como casi todos los demás en este hilo sugieren, pero la forma de TypeBuilder es mucho más emocionante. ;)
Es un tipo anónimo, que derrota el propósito. Esos objetos están diseñados para ser temporales. Demonios, las propiedades son incluso de solo lectura.
Lo siento, estoy siendo un asno inteligente. La respuesta es no, no hay forma de decirle al compilador qué nombre usar para un tipo anónimo.
De hecho, los nombres de los tipos generados por el compilador usan caracteres ilegales en sus nombres para que no pueda tener una colisión de nombres en su aplicación.
La respuesta en Java World sería una clase local (definida en un método), que está ausente en C #.
No, no hay forma de dar un nombre de tipo significativo a estas clases como las ha declarado. Los tipos anónimos son solo eso, anónimos. No hay manera de "nombrar" explícitamente el tipo en el código sin recurrir a hacks muy feos.
Si realmente necesita darle al tipo un nombre, deberá declarar explícitamente y usar un nuevo tipo con las propiedades que necesita.
Sí, está creando una clase anónima , si desea que su clase tenga un nombre, es decir, No anónimo , declare una clase o estructura regular.
public class Employee {
public int ID { get; set; }
public string Name { get; set; }
}
Luego usa la siguiente sintaxis
var employee = new Employee { ID = 5, Name = "Prashant" };
public class Employee {}