代码之家  ›  专栏  ›  技术社区  ›  klashar

验证自定义属性是否分配给非静态类成员

  •  1
  • klashar  · 技术社区  · 15 年前

    我需要创建一个只适用于非静态类成员的自定义属性。 如何在项目编译或使用代码分析工具时验证此约束?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Darin Dimitrov    15 年前
        2
  •  0
  •   MPritchard    15 年前

    您总是可以编写一些使用反射来验证这一点的后期生成事件…当然,这可能不是最优雅的解决方案……

    要设置它,您需要进入项目属性,然后进入“构建事件”选项卡。然后,您将输入用于实现此验证的基于反射的工具的命令行。

        3
  •  0
  •   theburningmonk    15 年前

    这可能不是你要找的,但可以用 PostSharp ,您可能会遇到类似的情况:

    [Serializable]
    public sealed class StaticAttribute : OnMethodBoundaryAspect
    {
        public override bool CompileTimeValidate(System.Reflection.MethodBase method)
        {
            return method.IsStatic;
        }
    

    onMethodBoundaryAspect基本上将您的方法包装在一个try/catch块中,compileTimeValidate方法决定是否在运行时调用该属性。