我不确定构造函数是否正是我正在寻找的,但如果我解释我正在尝试做的事情,希望有人能告诉我我正在尝试做的事情是否是一个愚蠢的想法,或者是否有办法做到这一点.
所以我有一个枚举:
public enum MessageType
{
Normal,
Error,
Chat,
Groupchat,
Headline
}
这个枚举基本上是 jabber.net MessageType
的包装器。所以我想从中创建我的枚举。所以目前我有这样的功能:
private MessageType ConvertMessageType(JabberMessageType jabberType)
{
MessageType type = MessageType.Error;
switch (jabberType)
{
case JabberMessageType.normal:
type = MessageType.Normal;
break;
//etc
}
return type;
}
所以我必须使用 enum MessageType type = ConvertMessageType(JabberMessageType.groupchat);
不过我想要的是能够做类似的事情:
enum MessageType type = MessageType(JabberMessageType.groupchat);
// or
enum MessageType type = MessageType.FromJabberJid(JabberMessageType.groupchat);
因此转换属于枚举而不是外部方法。
最佳答案
为什么不创建一个 extension method为你做这个?
public static class ExtensionMethods
{
public static MessageType ConvertMessageType(this JabberMessageType jabberType)
{
switch(jabberType)
{
case JabberMessageType.normal:
return MessageType.Normal;
// Add rest of types here.
default:
return MessageType.Error;
}
}
}
示例用法:
var type = JabberMessageType.normal; // JabberMessageType
var messageType = type.ConvertMessageType(); // Converted to your custom MessageType
关于c# - 向枚举添加构造函数(或函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8079190/