创建参数的自定义选择

问题描述:

我有一种方法需要一个参数来区分几种不同的情况。我可以传递一个字符串,并希望我(或将来使用该类的人)将使用其中一个已识别的命令。我宁愿有一个这样的结构:创建参数的自定义选择

方法声明:

myMethod(myOption opt){ ... } 

和调用应该是这样的:

myMethod(myOption.option1); 
的方法

我应该能够做到这一点:

if (opt == myOption.option1){ ... } 

我相信这是消息框的工作方式,当我传递按钮或图标的配置。

我做了很多实验并搜索了很多,但是我没有找到任何东西。也许这是因为我还没有找到正确的关键词组合来提供给谷歌。

感谢您的帮助!

+0

你的意思是你想调用随机数的参数或通过不同类型的构造函数调用它,我不明白你的问题! –

+0

我想用一个参数调用该方法。而这个参数的值必须是给定数量的可能性之一。这正是RJ Lohan所展示的。 – Jan

+0

是的,对不起,我错误地理解你的问题,不要错过打勾RJ作为一个正确的答案:) –

如果您有一组有限的可用参数,那么枚举可能是您的方法最适合的参数类型。因此,创建一个枚举来作为参数传递;

public enum MyOption 
{ 
    Option1, 
    Option2, 
    Option3, 
} 

public void MyMethod(MyOption option) 
{ 
    switch (option) 
    { 
     case MyOption.Option1: 
      // do stuff 
      return; 
     case MyOption.Option2: 
      // do stuff 
      return; 
     case MyOption.Option3: 
      // do stuff 
      return; 
    } 
} 
+0

嘿,谢谢!这正是我所期待的。 – Jan

+0

另一个问题:我可以附加属性的选项?在我的情况下,每个选项代表更长的文本。能够在MyMethod(MyOption选项)中将它用作option.Text(或一般的option.myProperty)将会很酷。 – Jan

+0

如果你的选项有更多的上下文,而不仅仅是'选项',也许你需要使用一个类或结构。如果上下文有限,也许可以使用DescriptionAttribute来为您的枚举值赋值,并在您的代码中读取它。 –