C#方法的扩展方法

5

有没有一种方法可以在方法上拥有扩展方法?一个例子是,当您需要将某个用户对象作为参数传递给方法,并且您需要在方法的开头进行安全检查以确定该用户是否可以使用该方法时。这个方法能否拥有类似于“检查此用户是否可以使用我”并返回布尔值的扩展方法呢?

谢谢。

6个回答

7

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`
    …
}

0

0

C#中的扩展方法并不是方法的扩展(我不确定我理解了什么意思),而是扩展对象/类的方法。

如果您想将您所描述的检查注入到代码中,可以考虑使用PostSharpAOP


0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接