【问题标题】:extension method for a method C#方法 C# 的扩展方法
【发布时间】:2010-10-08 08:25:20
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: c# methods extension-methods


    【解决方案1】:

    您可以使用Aspect Oriented Programming (AOP) 在您的代码中实施横切安全检查。

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

    特别是 PostSharp 文档有 some nice examples on how to implement security using AOP

    【讨论】:

      【解决方案2】:

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

      但您可以使用Aspect Oriented Programming (AOP) 来做您想做的事情,例如使用PostSharpSpring.NET

      【讨论】:

        【解决方案3】:

        我不太确定您在寻找什么,但这对我来说就像声明式安全。

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

              【解决方案6】:

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

              【讨论】:

                猜你喜欢
                • 2014-05-13
                • 2010-09-09
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-06-18
                • 2016-10-30
                • 2020-04-15
                • 2010-12-03
                相关资源
                最近更新 更多