0by*_*tes 8 c# enums interface
我有一个界面
接口:
interface IThing
{
Enum MyEnum {get;set;}
string DoAction(MyEnum enumOptionChosen, string valueToPassIn);
}
Run Code Online (Sandbox Code Playgroud)
具体实施:
public class Thing : IThing
{
public enum MyEnum
{
FirstOption,
SecondOption,
ThirdOption
}
string doAction(MyEnum enumOptionChosen, string valueToPassIn)
{
switch(enumOptionChosen)
{
case MyEnum.FirstOption:
x();
break;
case MyEnum.SecondOption:
y();
break;
case MyEnum.ThirdOption:
z();
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,我得到'IThing.MyEnum'是一个'属性'但是像'类型'一样使用.我遗漏了一些能够要求在DoAction()签名中使用Enum的东西.
谢谢你的帮助.
ben*_*wey 17
在您的接口中MyEnum是变量的名称而不是类型,因此编译器将无法识别它.您应该能够使用泛型来完成这项工作.
public interface IThing<T>
{
T MyEnum { get; set; }
string doAction(T enumOptionChosen, string valueToPassIn);
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样实现它:
public interface IThing<T>
{
T MyEnum { get; set; }
string doAction(T enumOptionChosen, string valueToPassIn);
}
public class Something : IThing<Something.SpecialEnum>
{
public enum SpecialEnum
{
Item1,
Item2,
Item3
}
public SpecialEnum MyEnum { get; set; }
public string doAction(SpecialEnum enumOptionChosen, string valueToPassIn)
{
return "something";
}
}
Run Code Online (Sandbox Code Playgroud)