有没有办法在方法上有扩展方法?这样做的例子是将某个用户对象作为参数的方法,如果该用户可以在该方法的最开始处使用该方法,则需要执行安全检查。该方法是否有扩展方法,如“检查该用户是否可以使用我”并返回bool。方法的扩展方法C#
谢谢。
有没有办法在方法上有扩展方法?这样做的例子是将某个用户对象作为参数的方法,如果该用户可以在该方法的最开始处使用该方法,则需要执行安全检查。该方法是否有扩展方法,如“检查该用户是否可以使用我”并返回bool。方法的扩展方法C#
谢谢。
您可以使用Aspect Oriented Programming (AOP)来实现在你的代码跨部门的安全检查。
在.NET你有几个AOP框架可供选择,例如:
特别是PostSharp文档有some nice examples on how to implement security using AOP。
我不太清楚你在找什么,但是这味道就像声明式的安全。
我不知道如果我明白你的问题很好。然而,这个怎么样:
public static void EnsureUserHasAccess(this object obj)
{
// check permissions, possibly depending on `obj`'s actual type
}
public static void DoSomething(this MyClass obj)
{
// permissions check
obj.EnsureUserHasAccess();
// do something about `obj`
…
}
public static void DoSomethingElse(this MyDifferentClass obj)
{
// permissions check
obj.EnsureUserHasAccess();
// do something about `obj`
…
}
Extension methods在C#中没有的方法扩展(不知道我理解这意味着什么),但扩展对象/类的方法。
您无法为使用C#的方法添加扩展方法。
但是,您可以使用Aspect Oriented Programming (AOP)来做你想做的事情,例如使用PostSharp或Spring.NET。
Example of securing methods with PostSharp
public class BusinessDivision : BusinessObject
{
[SecuredOperation("Manager")]
public void EnlistEmployee(Employee employee)
{
// Details omitted.
}
}
你可以用madgnome的答案,这是基于方面编程(很高兴看到有人使用.net),或者你可以使用属性和粘贴一些代码在每个应该被守护的方法。