2014-10-09 7 views
0

В Quartz.net, если я объявляю класс с атрибутами [PersistJobDataAfterExecution] или [DisallowConcurrentExecution], который реализует интерфейс IJob, будут ли классы, которые наследуют этот класс, также наследовать эти атрибуты?Наследует ли дочерний класс атрибут Quartz.net [PersistJobDataAfterExecution] от родительского класса

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

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

Таким образом, в фрагменте кода выше, делает ChildJob имеют [PersistJobDataAfterExecution] или [DisallowConcurrentExecution] атрибуты?

Если это не так, как я могу заставить их наследоваться без изменения исходного кода Quartz.net?

ответ

2

Они унаследовали, не потому, что они определяются как наследуемые, а тем, как Quartz.net проверки на наличие признаков по классам:

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

Source

GetCustomAttributes(Type, bool) В , параметр bool может быть:

true, чтобы найти цепочку наследования этого члена, чтобы найти атрибуты; в противном случае - false. Этот параметр игнорируется для свойств и событий; см. Примечания.

+0

Извините, возможно, я был неоднозначным, я имел в виду, если бы я создал родительский класс с атрибутами, будут ли дочерние классы наследовать атрибут? – Dan

+0

Я редактировал вопрос, это был скорее неправильный вопрос, чем двусмысленный. Извини за это! – Dan

+0

Извините, я прочитал все это немного неправильно. У меня есть то, что должно быть правильным ответом. –

Смежные вопросы