5

这一定是一个非常基本的问题,但是在互联网上磕磕绊绊了一段时间后,我无法理解下面的代码。我对 c# 很陌生。[](方括号)的用例到底是什么

class Options
{
    [Option('f', "file", Required = true,
        HelpText = "Input file to be processed.")]
    public string InputFile { get; set; }

    [Option('o', "outprefix", Required = true,
        HelpText = "Output prefix for file.")]
    public string OutPreFix { get; set; }

    [Option('v', "verbose", DefaultValue = false,
        HelpText = "Prints all messages to standard output.")]
    public bool Verbose { get; set; }

    [ParserState]
    public IParserState LastParserState { get; set; }

    [HelpOption]
    public string GetUsage()
    {
        return HelpText.AutoBuild(this, (HelpText current) => HelpText.DefaultParsingErrorsHandler(this, current));
    }
}
4

4 回答 4

8

这些是属性。基本上,他们为成员提供自定义元数据。该元数据内置在程序集中,并且可以由其他代码(通过反射)获取,然后可以将信息用于它想要的任何目的。

在这种特殊情况下,它们被用来为可以在命令行上指定的属性提供元数据,可能会被这个库使用。

如果您是 C# 的新手,您可能希望暂时忽略这些内容 - 尽管这在很大程度上取决于您正在进行的开发类型。一些代码严重依赖属性(例如 MVC),而其他代码几乎不会触及它。

于 2013-05-10T10:44:13.927 回答
1

这些是属性——它们有效地定义了关于它们所在成员的元数据(无论是类、方法等),并且可以使用反射进行查询。有关更多信息,请参阅:

于 2013-05-10T10:45:45.230 回答
1

这些是可以应用于类型及其成员的属性。有些人会说你用属性“装饰”了一个成员,以提供有关成员的更多信息。例如,数据注释可用于提供针对类型属性的验证。

进一步阅读:MSDN

您也可以创建自己的属性:MSDN

希望有帮助

保罗

于 2013-05-10T10:47:10.730 回答
1

在 C# 中,方法前使用的方括号表示属性 - 基本上是可以影响函数或类行为方式的元数据。有许多不同种类的属性用于许多不同的目的。他们可以做各种各样的事情,但这里有一些例子:

  • 他们可以将一个类标记为可序列化
  • 使方法可通过 Web 服务访问
  • 根据需要标记类属性(允许关联页面显示正确的验证)
  • 在 xml 和 json 之间更改 Web 服务方法的返回格式

它们还可以包含与元标记有关的属性,因此在上面的示例中,Option标记设置了几个更改行为的参数(例如,使字段成为必需或更改帮助文本)。

一般来说,你会在你需要的时候了解你需要的属性,所以不要太担心理解每一种可能性。

于 2013-05-10T10:54:10.583 回答