如何与Regex.Match一样实现自定义方法选项

时间:2019-05-07 13:44:34

标签: c#

我正在尝试创建一个接受诸如Regex.Match接受RegexOptions之类的选项的方法。

例如,我有一个类似的方法:

        private static void UpdateState(Record record, string state)
        {
            record.State = state;
        }

但是在下面的示例中,我希望它不是参数“ string state”,而是像“ System.Text.RegularExpressions.RegexOptions options”这样的参数:

public static System.Text.RegularExpressions.Match Match (string input, string pattern, System.Text.RegularExpressions.RegexOptions options, TimeSpan matchTimeout);

我可以简单地接受string参数并以静态方式读取类的成员,但这并不能达到预期的结果,因为我只能传入任何字符串。

所以我希望能够像这样传递参数:

UpdateState(record, Record.Closed);

如何正确执行此操作并限制可以传入我自己的一组自定义预定义选项的值?

1 个答案:

答案 0 :(得分:3)

如果您查看RegexOptions documentation,就会发现它是enum

如果您对此进行了研究,则会发现自己可以declare your own enumeration type

public enum MyMethodOptions
{
    Option1 = 1,
    Option2 = 2,
    Option3 = 4,
    // ...

}

现在,您可以声明一个接受该类型参数的方法:

public void MyFoo(MyMethodOptions options) { ... }

并命名为:

MyFoo(MyMethodOptions.Option1 | MyMethodOptions.Option3);