Например:Как изменить имя класса/свойства?
public class Car{
public string color {get; set;}
public int VINCode {get;set;}
}
Теперь, если я позвоню nameof(Car)
возвращается «Автомобиль»
[Name("something")]
public class Car{
[Name("something_else")]
public string color {get; set;}
public int VINCode {get;set;}
}
Но как я могу получить nameof вернуть значение в имени атрибута, а не имя класса или метод. например: nameof(Car) == "something"
или nameof(Car.color) == "something_else"
.
проблема:
var modelState = JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(data);
var departmentViewModels = modelState[nameof(DepartmentListView.DepartmentsViewModels)][0];
var departmentTypes = modelState[nameof(DepartmentListView.DepartmentsViewModels)][0];
фиксации для этого:
var modelState = JsonConvert.DeserializeObject<DepartmentListView>(data);
var departmentViewModels = modelState.DepartmentsViewModels;
var departmentTypes = modelState.DepartmentTypes;
Сериализация этого:
public class DepartmentListView
{
public IEnumerable<DepartmentViewModel> DepartmentsViewModels { get; set; }
public IEnumerable<DepartmentType> DepartmentTypes { get; set; }
}
будет:
departmentsViewModel : [], departmentTypes : [] (with lowercase)
Я знаю, что я могу изменить, что строчные сериализации с JsonProperty, но я думал, что я могу изменить имя класса или свойств ...
Вы хотите взять функцию, которая была создана таким образом, что вы можете иметь сильные компиляционные гарантии совпадений имен, а не полагаться на хрупкое использование строк и ... повторно вводить хрупкое использование строк? –
'nameof' был разработан специально для использования текущего имени класса, переменной и т. Д. Целью было то, что если имя было изменено, программистам не пришлось бы везде менять жесткий текст с буквами. – ps2goat
Согласен, вопрос чувствует себя немного странно, возможно, если вы объясните, что вы в конечном итоге пытаетесь выполнить, может быть, есть более практичный способ его достижения. – Jake