PostSharp:从 类 中排除从公共基础派生的同一命名空间中的多播属性
PostSharp: Exclude multicasted attribute from classes within same namespace that derive from common base
我在给定命名空间中的所有 EF 实体上在程序集级别多播接口介绍,但我想从介绍中排除该命名空间中派生自 DbContext 的任何 classes。不确定如何在不按名称明确排除每个 DbContext 派生的 class 的情况下执行此操作。 :(
[assembly: MyApi.IntroduceAspect(AttributeTargetTypes = "MyApi.Models.*")]
[assembly: MyApi.IntroduceAspect(AttributeTargetTypes = "MyApi.Models.SomeContext", AttributeExclude = true)]
[assembly: MyApi.IntroduceAspect(AttributeTargetTypes = "MyApi.Models.SomeOtherContext", AttributeExclude = true)]
属性多播不允许在目标类型的基础 class 上进行过滤。对于这种过滤,您可以在方面实现 CompileTimeValidate
方法,如果目标类型来自 DbContext
.
,则可以实现 return false
public override bool CompileTimeValidate(Type targetType)
{
if (typeof(DbContext).IsAssignableFrom(targetType))
return false;
return true;
}
我在给定命名空间中的所有 EF 实体上在程序集级别多播接口介绍,但我想从介绍中排除该命名空间中派生自 DbContext 的任何 classes。不确定如何在不按名称明确排除每个 DbContext 派生的 class 的情况下执行此操作。 :(
[assembly: MyApi.IntroduceAspect(AttributeTargetTypes = "MyApi.Models.*")]
[assembly: MyApi.IntroduceAspect(AttributeTargetTypes = "MyApi.Models.SomeContext", AttributeExclude = true)]
[assembly: MyApi.IntroduceAspect(AttributeTargetTypes = "MyApi.Models.SomeOtherContext", AttributeExclude = true)]
属性多播不允许在目标类型的基础 class 上进行过滤。对于这种过滤,您可以在方面实现 CompileTimeValidate
方法,如果目标类型来自 DbContext
.
false
public override bool CompileTimeValidate(Type targetType)
{
if (typeof(DbContext).IsAssignableFrom(targetType))
return false;
return true;
}