有没有办法在方法上使用扩展方法?这方面的示例是将一些用户对象作为参数的方法,如果该用户可以在方法的最开始使用该方法,则需要进行安全检查。该方法可以使用扩展方法,例如“检查此用户是否可以使用我”并返回bool。
感谢。
答案 0 :(得分:7)
您可以使用Aspect Oriented Programming (AOP)在代码中实施横切安全检查。
在.NET中,您可以选择多个AOP框架,例如:
特别是PostSharp文档有some nice examples on how to implement security using AOP。
答案 1 :(得分:3)
您无法为使用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.
}
}
答案 2 :(得分:0)
我不太确定你在寻找什么,但这对我来说就像声明性安全一样。
答案 3 :(得分:0)
我不确定我是否理解你的问题。但是,这个怎么样:
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`
…
}
答案 4 :(得分:0)
Extension methods不是方法的扩展(不确定我理解这意味着什么),而是扩展对象/类的方法。
答案 5 :(得分:0)
你可以使用madgnome的答案,它基于方面编程(很高兴看到有人在.net中使用过)或者你可以使用属性并在每个应该保护的方法中粘贴一些代码。