C# 可执行属性

标签 c# attributes

有没有办法像这样定义属性:

public class MyAttribute : Attribute
{
    void OnFunctionInvoke() { ... }
}

并用该属性标记一些函数

[MyAttribute]
void SomeFunction() { ... }

当调用 SomeFunction 时,我希望先调用 OnFunctionInvoke()。

最佳答案

您可以尝试使用 CodeAccessSecurityAttribute 作为by-way:

https://msdn.microsoft.com/en-us/library/system.security.permissions.codeaccesssecurityattribute(v=vs.110).aspx

  using System.Security.Permissions;
  ...

  [AttributeUsage(AttributeTargets.All)]
  public class MyInterceptAttribute: CodeAccessSecurityAttribute {
    public MyInterceptAttribute(SecurityAction action)
      : base(action) {
    }

    public override System.Security.IPermission CreatePermission() {
      //TODO: put relevant code here
      Console.Write("Before method execution!");

      return null;
    }
  }

  ...

  // We demand permissions which in turn leads to CreatePermission() call    
  [MyInterceptAttribute(SecurityAction.Demand)]  
  public void MyMethodUnderTest() {
    Console.Write("Method execution!");
  }

因此,从技术上讲,可能(我们利用安全性),但这只是一个旁路。

关于C# 可执行属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37387567/

相关文章:

c# - 如何从枚举成员获取 DescriptionAttribute 值

c# - C#中属性的用途是什么?

c# - xUnit 将 Trait 添加到 CollectionDefinition

c# - 从数据库中检索主键

c# - 在图表中添加 x 轴字符串值而不是数字

Python - 迭代每个嵌套的 JSON 条目以在同一树级别存储两个特定值

c# - 如何从pdf文件中找到页眉页脚

c# - 从托管代码调用 Folder.PropertyAccessor 是否安全?

c# - Visual Studio 2015 中的隐藏/折叠属性

xpath - 如何在XPath中使用一个表达式从同一节点中选择两个属性?