Получение jsonpropertyattribute имуществаC#

Место общения программистов C#
Ответить
Anonymous
 Получение jsonpropertyattribute имущества

Сообщение Anonymous »

Я нашел пост с отличным ответом для проблемы, с которой у меня есть, но я не могу найти небольшую деталь, которую я ищу. < /p>

Код: Выделить всё

public class myModel
{
[JsonProperty(PropertyName = "id")]
public long ID { get; set; }
[JsonProperty(PropertyName = "some_string")]
public string SomeString {get; set;}
}
Мне нужен метод, который возвращает JSonProperty PropertyName конкретного свойства. Может быть, что -то, где я могу передать тип < /code> и свойство < /code> мне нужно, и метод возвращает значение, если найдено.using System.Linq;
using System.Reflection;
using Newtonsoft.Json;
...

public static string GetFields(Type modelType)
{
return string.Join(",",
modelType.GetProperties()
.Select(p => p.GetCustomAttribute()
.Where(jp => jp != null)
.Select(jp => jp.PropertyName));
}
< /code>

Цель состоит в том, чтобы вызвать такую функцию (любая модификация в порядке) < /p>

string field = GetField(myModel, myModel.ID);
< /code>

Обновление #1 < /strong> < /p>

Я изменил вышеуказанное, но я не знаю, как получить строку идентификатора < /code> от mymodel.id < /code>. < /p>

public static string GetFields(Type modelType, string field) {
return string.Join(",",
modelType.GetProperties()
.Where(p => p.Name == field)
.Select(p => p.GetCustomAttribute())
.Where(jp => jp != null)
.Select(jp => jp.PropertyName)
);
}
< /code>

Я хочу предотвратить < /strong> жесткие строки фактических имен свойств. Например, я не < /strong> хочу называть приведенный выше метод как: < /p>

string field = GetField(myModel, "ID");
< /code>

Я бы предпочел использовать что -то вроде < /p>

string field = GetField(myModel, myModel.ID.PropertyName);
< /code>

Но я не совсем уверен, как правильно это сделать. < /p>

Спасибо! < /p>

Подробнее здесь: https://stackoverflow.com/questions/458 ... a-property
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»