基类中的WCF实现,PrincipalPermission派生类中的角色?

时间:2013-06-18 09:21:43

标签: c# .net wcf inheritance 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";
}

0 个答案:

没有答案