方法的扩展方法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`
…
}
答
您无法为使用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),或者你可以使用属性和粘贴一些代码在每个应该被守护的方法。