方法C#的扩展方法

时间:2010-10-08 08:25:21

标签: c# methods extension-methods

有没有办法在方法上使用扩展方法?这方面的示例是将一些用户对象作为参数的方法,如果该用户可以在方法的最开始使用该方法,则需要进行安全检查。该方法可以使用扩展方法,例如“检查此用户是否可以使用我”并返回bool。

感谢。

6 个答案:

答案 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)来执行您想要的操作,例如使用PostSharpSpring.NET

答案 2 :(得分:0)

我不太确定你在寻找什么,但这对我来说就像声明性安全一样。

看看:http://msdn.microsoft.com/en-us/library/kaacwy28.aspx

答案 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)

C#中的

Extension methods不是方法的扩展(不确定我理解这意味着什么),而是扩展对象/类的方法。

如果您想将您要描述的检查类型注入代码中,可以查看PostSharpAOP

答案 5 :(得分:0)

你可以使用madgnome的答案,它基于方面编程(很高兴看到有人在.net中使用过)或者你可以使用属性并在每个应该保护的方法中粘贴一些代码。