Для моего веб-сервиса ASP.NET MVC У меня есть модель, которую я возвращаю как объект JSON. Теперь в моей модели есть некоторые свойства, которые я не хочу возвращать.Свойства модели фильтрации API API
Пример модели:
class Account {
public int ID { get; }
public string Username { get; }
public string Password { get; }
//... more properties
}
Скажем, я только хочу, чтобы вернуть ID
и Username
свойства в формате JSON. Я ищу хороший способ фильтрации только этих свойств. Изменение модификатора доступа для меня не является вариантом.
Решение, о котором я мог думать, создает белый список, как показано ниже. Здесь я добавил DisplayName
, что было бы неплохо, чтобы иметь возможность настраивать, но это не требуется.
class FilterProperty
{
public string PropertyName { get; }
public string DisplayName { get; }
public FilterProperty(string propertyName, string displayName)
{
PropertyName = propertyName;
DisplayName = displayName;
}
}
class Account
{
public static FilterProperty[] Whitelist = {
new FilterProperty("ID", "accountId"),
new FilterProperty("Username", "accountName")
};
//...
}
Недостатком этого решения является: если бы я изменить имя свойства, я должен был бы изменить белый список тоже.
Могу ли я сделать эту работу или есть лучшие решения?
Проверьте эту статью, написанную вокруг повышений и понижений размещения: http://odetocode.com/blogs/ Скот/Архив/2012/03/11/полн-руководство к массе присваивание-в-Asp-нетто-mvc.aspx. Особенно проверьте строго типизированные подходы, в частности, используя интерфейсы для ограничения модели. –
Можете ли вы создать AccountDto, нанести туда нужные значения и просто вернуть AccountDto вместо учетной записи? – hellwd
@hellwd Я пробовал это, но это удваивает количество моделей, которые у меня есть, что кажется не очень эффективным. –