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

将一个方法传递给另一个方法

  •  2
  • Schotime  · 技术社区  · 17 年前

    是否可以将函数发送到另一个函数以使其运行。 例如…我想在一个字段上有一个属性,在该字段上我可以指定一个方法,该方法将被发送到另一个方法,在该方法中传递的方法将被运行。

    不确定这是否有意义,但这里有一个小例子。

    [ValidateIf(x=>x.test())]
    public string test { get; set; }
    

    更新: 基本上,我想使用dataannotation进行验证,但有时根据系统设置,字段可能不是必需的……您对我的方向有什么建议吗?

    3 回复  |  直到 11 年前
        1
  •  3
  •   Jon Skeet    17 年前

    很遗憾,不能将委托用作属性的属性。您必须指定方法名,然后在执行时使用反射创建委托——这显然不适合在编译时查找输入错误。

    可以 在IL中是可能的(指定 MethodInfo 使用等效于 typeof )但C并没有暴露任何这样做的方式:(也许有一天我们会得到 infoof 操作员…我不确定它会怎么暴露出来。(最好在属性中保留委托类型信息。)

        2
  •  0
  •   JaredPar    17 年前

    我不知道这是否能满足您的特定目标,但一般来说,如果您希望在语言中添加数据注释,我建议您查看spec。这是C语言的一个扩展,它允许您向程序中添加数据契约,并且似乎可以实现您正在寻找的目标。

    http://research.microsoft.com/en-us/projects/specsharp/

        3
  •  0
  •   hazzik    11 年前

    如果您希望向域对象添加验证,可以查看nhibernate验证程序。

    http://nhibernate.info/doc/validator/nhibernate-validator-1-0-0-documentation.html