本文整理汇总了C#中ItemDefinition.GetCustomAttributes方法的典型用法代码示例。如果您正苦于以下问题:C# ItemDefinition.GetCustomAttributes方法的具体用法?C# ItemDefinition.GetCustomAttributes怎么用?C# ItemDefinition.GetCustomAttributes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ItemDefinition
的用法示例。
在下文中一共展示了ItemDefinition.GetCustomAttributes方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetInterceptableProperties
private IEnumerable<AttributedProperty> GetInterceptableProperties(ItemDefinition definition)
{
// Also include properties on base classes since properties are matched by reference and
// and we want to intercept calls to properties on base classes with the same name
for (Type t = definition.ItemType; t != null; t = t.BaseType)
{
foreach (var property in t.GetProperties())
{
if (!property.CanRead)
continue;
if (!property.GetGetMethod().IsVirtual)
continue;
if (!property.IsCompilerGenerated())
continue;
var attributes = definition.GetCustomAttributes<IInterceptableProperty>(property.Name);
if (attributes.Any(a => a.PersistAs != PropertyPersistenceLocation.Detail && a.PersistAs != PropertyPersistenceLocation.DetailCollection))
// some property is persisted as something other than detail or detail collection
continue;
if (!attributes.Any(a => a.PersistAs == PropertyPersistenceLocation.Detail || a.PersistAs == PropertyPersistenceLocation.DetailCollection))
// no property is persisted as detail or detail collection
continue;
yield return new AttributedProperty { Property = property, Attribute = attributes.First() };
}
}
}