我在给定名称空间中的所有EF实体的组装级别上多播一个接口介绍,但是我想从该介绍中排除该名称空间中派生自DbContext的所有类。如果不按名称明确排除每个DbContext派生的类,则不确定如何执行此操作。 :(
[assembly: MyApi.IntroduceAspect(AttributeTargetTypes = "MyApi.Models.*")]
[assembly: MyApi.IntroduceAspect(AttributeTargetTypes = "MyApi.Models.SomeContext", AttributeExclude = true)]
[assembly: MyApi.IntroduceAspect(AttributeTargetTypes = "MyApi.Models.SomeOtherContext", AttributeExclude = true)]
答案 0 :(得分:1)
属性多播不允许在目标类型的基类上进行过滤。对于这种过滤,您可以在方面实现CompileTimeValidate
方法,如果目标类型是从false
派生的,则返回DbContext
。
public override bool CompileTimeValidate(Type targetType)
{
if (typeof(DbContext).IsAssignableFrom(targetType))
return false;
return true;
}