gpt4 book ai didi

c# - 在 C# 接口(interface)和接口(interface)的方法签名之一中实现枚举

转载 作者:太空狗 更新时间:2023-10-29 18:07:50 25 4
gpt4 key购买 nike

我有一个界面

接口(interface):

interface IThing
{
Enum MyEnum {get;set;}
string DoAction(MyEnum enumOptionChosen, string valueToPassIn);
}

具体实现:

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;
}
}
}

当我尝试编译它时,我得到“IThing.MyEnum”是一个“属性”,但像“类型”一样使用。我遗漏了一些关于能够要求在 DoAction() 签名中使用 Enum 的信息。

感谢您的帮助。

最佳答案

在您的接口(interface)中,MyEnum 是变量的名称而不是类型,因此编译器无法识别它。您应该能够使用泛型来完成这项工作。

public interface IThing<T>
{
T MyEnum { get; set; }
string doAction(T enumOptionChosen, string valueToPassIn);
}

然后你可以这样实现它:

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";
}
}

关于c# - 在 C# 接口(interface)和接口(interface)的方法签名之一中实现枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3965172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com