Подтвердить что ты не робот

Могу ли я указать значимое имя для анонимного класса в С#?

Мы все знаем, что когда мы создаем анонимный класс следующим образом:

var Employee = new { ID = 5, Name= "Prashant" };

... во время выполнения он будет иметь тип:

<>f__AnonymousType0<int,string>

Есть ли способ указать значимое имя для таких классов?

4b9b3361

Ответ 1

public class Employee {}

Ответ 2

Это анонимный тип, который побеждает цель. Эти объекты предназначены для временного использования. Черт, свойства даже доступны только для чтения.

Извините, я умная задница. Ответ отрицательный, нет способа сообщить компилятору, какое имя использовать для анонимного типа.

Фактически имена типов, сгенерированных компилятором, используют незаконные символы в их наименовании, чтобы вы не могли столкнуться с именами в своем приложении.

Ответ 3

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

Затем используйте следующий синтаксис

var employee = new Employee { ID = 5, Name = "Prashant" };

Ответ 4

Сделать это обычным классом с именем?

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


var Employee = new Employee { ID = 5, Name= "Prashant" };

Ответ 5

На самом деле, если вы не боитесь получить чрезвычайно суровый характер, вы можете использовать TypeBuilder для создания своего собственного типа времени выполнения на основе вашего анонимного типа, который позволит вам указать имя для этого типа. Конечно, гораздо проще просто объявить класс, как и почти все остальные в этой теме, но способ TypeBuilder намного интереснее.;)

TypeBuilder

Ответ 6

Ответ в Java World будет локальный класс (определенный в методе), которые отсутствуют в С#.

Ответ 7

Да, вы создаете Анонимный класс, если вы хотите, чтобы ваш класс имел имя, т.е. Не анонимно, затем объявляйте обычный класс или структуру.

Ответ 8

Так как это анонимно, вы не можете назвать его. Если вам нужно знать имя типа, вы должны действительно создать класс.

Ответ 9

Нет, нет способа дать осмысленное имя типа этим классам, как вы их объявили. Анонимные типы - это просто анонимный. Невозможно явно "называть" тип кода, не прибегая к очень уродливым хакам.

Если вам действительно нужно указать тип имени, вам нужно явно объявить и использовать новый тип со свойствами, которые вам нужны.

Ответ 10

Я думаю, что, по определению, анонимные типы не могут иметь имя, просто то, что дает его компилятор. Если вы ищете более значимую информацию о времени разработки для анонимных типов, вы ожидаете слишком многого от компилятора.