子类是否从父类继承Quartz.net [PersistJobDataAfterExecution]属性

时间:2014-10-09 17:18:44

标签: c# inheritance attributes quartz.net

在Quartz.net中,如果我声明一个具有实现IJob接口的[PersistJobDataAfterExecution][DisallowConcurrentExecution]属性的类,那么继承此类的类是否也会继承这些属性?

[PersistJobDataAfterExecution]
[DisallowConcurrentExecution]
public abstract class ParentJob : IJob
{
    //...
}

public class ChildJob : ParentJob
{
    //...
}

因此,在上面的代码段中,ChildJob是否具有[PersistJobDataAfterExecution][DisallowConcurrentExecution]属性?

如果不是,如何在不改变Quartz.net源代码的情况下继承它们?

1 个答案:

答案 0 :(得分:2)

它们是继承的,不是因为它们被定义为可继承的,而是因为Quartz.net如何检查类上属性的存在:

public static bool IsAttributePresent(Type typeToExamine, Type attributeType)
{
    return typeToExamine.GetCustomAttributes(attributeType, true).Length > 0;
}

Source

GetCustomAttributes(Type, bool)中,bool参数可以是:

  

true 搜索此成员的继承链以查找属性;否则,错误。属性和事件将忽略此参数;见备注。