繁体   English   中英

方法C#的扩展方法

[英]extension method for a method C#

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

谢谢。

您可以使用面向方面编程(AOP)在代码中实现跨平台安全检查。

在.NET中,您可以选择多个AOP框架,例如:

特别是PostSharp文档有一些关于如何使用AOP实现安全性的很好的例子

您无法为使用C#的方法添加扩展方法。

但您可以使用面向方面编程(AOP)来执行您想要的操作,例如使用PostSharpSpring.NET

  • 使用PostSharp保护方法的示例

     public class BusinessDivision : BusinessObject { [SecuredOperation("Manager")] public void EnlistEmployee(Employee employee) { // Details omitted. } } 

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

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

我不确定我是否理解你的问题。 但是,这个怎么样:

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#中没有的方法扩展(不知道我理解这意味着什么),但方法扩展对象/类。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM