Pos*_*Guy 30 c# enums interface
好的,所以这篇文章的基础和解释标题很简单.我有一个方法的接口.用户端的该方法将枚举作为参数.但是你不能在界面中定义枚举因此我不知道如何定义这个方法然后如果我期待一个类型枚举作为传入参数之一.
那你怎么处理这种情况呢?你怎么能在你的界面中获得该方法.你不知道他们需要发送什么Enum但是你肯定知道你想要它是一个枚举而不是魔术字符串.
枚举不是引用类型,因此您不能将其Object用作传入参数的类型.所以不知道该怎么做.
小智 31
public enum MyEnum
{
Hurr,
Durr
}
public interface MyInterface
{
void MyMethod(MyEnum value);
}
Run Code Online (Sandbox Code Playgroud)
如果这不是您正在谈论的内容,请发表评论,以便人们了解您的问题.因为,虽然enum没有在界面中定义,但这是一个完全正常且可接受的设计.
Yur*_*ich 19
interface MyInterface
{
void MyMethod(Enum @enum);
}
Run Code Online (Sandbox Code Playgroud)
另一种解决方案可能是使用泛型类型:
public enum MyEnum
{
Foo,
Bar
}
public interface IDummy<EnumType>
{
void OneMethod(EnumType enumVar);
}
public class Dummy : IDummy<MyEnum>
{
public void OneMethod(MyEnum enumVar)
{
// Your code
}
}
Run Code Online (Sandbox Code Playgroud)
此外,从 C# 7.3 开始,您可以添加通用约束以仅接受 Enum 类型:
public interface IDummy<EnumType> where EnumType : Enum
{
void OneMethod(EnumType enumVar);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40249 次 |
| 最近记录: |