我可以在C#中为匿名类指定有意义的名称吗?

Pra*_*dda 43 .net c# anonymous-class c#-3.0

我们都知道,当我们创建一个这样的匿名类时:

var Employee = new { ID = 5, Name= "Prashant" };
Run Code Online (Sandbox Code Playgroud)

...在运行时它将是类型:

<>f__AnonymousType0<int,string>
Run Code Online (Sandbox Code Playgroud)

有没有办法为这些类指定有意义的名称?

Chr*_*ris 38

这是一种匿名类型,无法达到目的.这些对象被设计为临时的.地狱,这些属性甚至是只读的.

对不起,我是个聪明人.答案是否定的,没有办法告诉编译器匿名类型使用什么名称.

实际上,编译器生成的类型的名称在命名中使用非法字符,因此您的应用程序中不会发生名称冲突.


Nic*_*rdi 36

public class Employee {
    public int ID { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后使用以下语法

var employee = new Employee { ID = 5, Name = "Prashant" };
Run Code Online (Sandbox Code Playgroud)


Dea*_*unt 24

把它变成一个有名字的普通班级?

public class Employee
{
    public int ID;
    public string Name;
}


var Employee = new Employee { ID = 5, Name= "Prashant" };
Run Code Online (Sandbox Code Playgroud)


Mia*_*rke 24

实际上,如果你不害怕获得极端的细节,你可以使用TypeBuilder根据你的匿名类型构建自己的运行时类型,这将允许你指定类型的名称.当然,在这个线程建议中几乎所有其他人都声明一个类要容易得多,但TypeBuilder方式更令人兴奋.;)

TypeBuilder


Dam*_*ian 8

Java World中的答案是本地类(在方法中定义),在C#中不存在.