Реализация WCF в базовом классе, роль PrincipalPermission в производных классах?
У меня есть несколько служб WCF, которые все реализуют метод All(), поэтому я создал общий базовый класс, который реализует этот метод All(), но каждый вызов службы WCF нуждается в своей собственной роли безопасности.
public class QueryService<T>
where T : class
{
public IQueryable<T> All()
{
// query data
return data;
}
}
public class CarService : QueryService<Car>
{
[PrincipalPermission(SecurityAction.Demand, Role = "Car_R")]
public new IQueryable<Car> All()
{
return base.All();
}
}
public class BikeService : QueryService<Bike>
{
[PrincipalPermission(SecurityAction.Demand, Role = "Bike_R")]
public new IQueryable<Bike> All()
{
return base.All();
}
}
Есть ли способ переместить аннотацию PrincipalPermission в базовый класс (QueryService) и определить строку Role в моих производных классах, чтобы мне не пришлось переопределять каждый метод моего базового класса (и вызывать base.xxx).
Примерно так: (хотя не работает...)
public class QueryService<T>
where T : class
{
public const string RoleFromDerivedClass = "Default";
[PrincipalPermission(SecurityAction.Demand, Role = RoleFromDerivedClass)]
public IQueryable<T> All()
{
// query data
return data;
}
}
public class CarService : QueryService<Car>
{
public const string RoleFromDerivedClass = "Car_R";
}
public class BikeService : QueryService<Bike>
{
public const string RoleFromDerivedClass = "Bike_R";
}