У меня есть частичный класс, созданный с помощью веб-службы. Добавить ModelMetadata
к этому классу, как так:Получить все свойства с помощью ModelMetadata
// Automatically generated code
public partial class MyClass
{
public string FIELD_ONE ...
public DateTime? FIELD_TWO ...
}
// My code
[MetadataType(typeof(MyMetaDataClass))]
public partial class MyClass
{
}
public class MyMetaDataClass
{
[Display(Name="Field One")]
public string FIELD_ONE;
[Display(Name="Field Two")]
public DateTime? FIELD_TWO;
}
Теперь я хотел бы получить все свойства, которые имеют MyClass
метаданных отображения атрибутов, т.е. FIELD_ONE
и FIELD_TWO
.
Я пытался что-то вроде
typeof(MyClass).GetProperties().Where(p => Attribute.IsDefined(typeof(DisplayAttribute))
Но, конечно, атрибут не на свойствах MyClass
. Я также попытался:
ModelMetadata mmd = ModelMetadata.FromLambdaExpression(m => pi.GetValue(m, null), Html.ViewData);
Но я получаю сообщение об ошибке «Шаблоны могут быть использованы только с доступом поля, доступ к собственности, одномерный индекс массива или одного параметра выражений пользовательских индексатор.»
Если бы я мог получить от MyClass
до MyMetadataClass
Тогда я мог бы получить имена свойств этого и получить свойства с таким же именем от MyClass
.
Возможно ли это, или я лаю неправильное дерево?
проверить это на это, я уже ответил на этот вопрос здесь http://stackoverflow.com/a/24757520/3050647 – elia07