Привет Я просто изучаю отражение, и я пытаюсь прочитать параметры для действий в контроллерах, которые украшены атрибутом T4ValidateAttribute.Получение свойств объекта параметра
Давайте рассмотрим пример:
public class LoginModelDTO
{
[Required(ErrorMessage = "Username is required")]
[MaxLength(50, ErrorMessage = "Username should not have more then 50 chars")]
[MinLength(25 , ErrorMessage = "Username should have at least 25 chars")]
public string UserName { get; set; }
[Required(ErrorMessage = "Password is required")]
[StringLength(25)]
public string Password { get; set; }
public bool RememberMe { get; set; }
}
[T4ValidateAttribute]
public bool LogIn(LoginModelDTO modelDTO)
{
return m_loginService.Login(modelDTO);
}
Мои контроллеры в проекте под названием prokect.WebApi и мои DTO находятся в проекте под названием project.DomainServices.Contracts. Я не буду добавлять ControllerInfo, потому что он работает, если вы, ребята, думаете, что это необходимо, я его добавлю.
//This code get all the controllers that inherit from the BaseApiController
List<Type> controllers = ControllersInfo.GetControllers<BaseApiController>("project.WebApi");
foreach (var controller in controllers)
{
//This retrives a Dictionary that has the key the method name and the valie an array of ParameterInfo[]
var actions = ControllersInfo.GetAllCustomActionsInController(controller, new T4ValidateAttribute());
foreach (var parameterInfose in actions)
{
var parameters = parameterInfose.Value;
foreach (var parameterInfo in parameters)
{
//This is where I do not knwo what to do
}
}
}
Если вы ooked на код немного и читать комментарии, которые вы можете увидеть, что в данный момент я могу получить доступ из каждого действия, его параметры.
В нашем примере возвращаемый параметр будет иметь тип LoginModelDTO.
Отныне я хотел бы именовать все свойства этого объекта для каждого свойства, чтобы получить его CustomAttributes.
Как я могу это достичь?
В вашем примере кода, параметры *** не имеют атрибутов * ** - методы и свойства; это намеренно? –
Параметры метода или свойства объекта? Я не совсем уверен, что вы после. –
терминология мудрая, похоже, это путаница в вопросе - вы получаете «пользовательские действия», которые являются * методами *, но вы вызываете параметры переменных ',' parameterInfo' и т. д. - вы объединяете методы и параметры? –