Это в консоли Immediate:
prop.GetCustomAttributes(typeof(RequiredParameterAttribute),true)
{BridgeStack.DataContracts.RequiredParameterAttribute [0]}
prop.GetCustomAttributes(typeof(RequiredParameterAttribute),true).Cast<RequiredParameterAttribute>()
{BridgeStack.DataContracts.RequiredParameterAttribute [0]}
[BridgeStack.DataContracts.RequiredParameterAttribute []]: {BridgeStack.DataContracts.RequiredParameterAttribute [0]}
prop.GetCustomAttributes(typeof(RequiredParameterAttribute),true).Cast<RequiredParameterAttribute>().Any()
ложь
Я получаю те же результаты в приложении.
prop
is Site
in:
public class AnswerCollectionQuery : IPagedQuery, ISiteQuery, ISortableQuery, IOrderableQuery, IFilteredQuery
{
public int? Page { get; set; }
public int? PageSize { get; set; }
public string Site { get; set; }
[AllowedSortValues(QuerySortEnum.Activity, QuerySortEnum.Creation, QuerySortEnum.Votes)]
public QuerySortEnum? Sort { get; set; }
public object Min { get; set; }
public object Max { get; set; }
public DateTime? FromDate { get; set; }
public DateTime? ToDate { get; set; }
public QueryOrderEnum? Order { get; set; }
public string Filter { get; set; }
}
Site
в свою очередь происходит от ISiteQuery
public interface ISiteQuery : IQuery
{
[RequiredParameter]
string Site { get; set; }
}
Неудобная часть заключается в том, что консоль показывает атрибут, позволяет мне разыграть его, но я не могу получить его вообще, я получаю ноль в качестве длины перечисления, поэтому .Any()
тоже терпит неудачу .FirstOrDefault()
возвращает null
, .First()
броски и т. д.
Есть ли объяснения этому типу поведения?
PD: это работает, хотя я украшаю Site
с [RequiredAttribute]
в конкретном классе. Но я хотел сделать эту часть интерфейса.
Обновление для ясности :
prop
исходит именно отсюда:
public static IEnumerable<PropertyInfo> GetAllProperiesOfObject(object o)
{
const BindingFlags flags = BindingFlags.Public | BindingFlags.FlattenHierarchy | BindingFlags.Instance;
PropertyInfo[] list = o.GetType().GetProperties(flags);
return list;
}
foreach (PropertyInfo prop in Utility.GetAllProperiesOfObject(entity))
Это тот случай, когда prop
становится Site