我有一个Web引用,它有一个枚举。C#实例枚举从另一个
WebService.WebEnum.Member1
WebService.WebEnum.Member2
WebService.WebEnum.Member3
等
有什么方法来创建基于WebEnum另一个枚举?我一直在这头拉几小时头发。
谢谢!
我有一个Web引用,它有一个枚举。C#实例枚举从另一个
WebService.WebEnum.Member1
WebService.WebEnum.Member2
WebService.WebEnum.Member3
等
有什么方法来创建基于WebEnum另一个枚举?我一直在这头拉几小时头发。
谢谢!
不可以。您不能在枚举上使用继承。
但是,您可以通过使用类的静态成员属性(而不是枚举)来实现类似的感觉。这个类可以通过继承来扩展。
public class WebEnum
{
protected WebEnum(int value)
{
...
}
private static WebEnum _member1 = new WebEnum(1);
public static WebEnum Member1
{
get { return _member1; }
}
}
然后你就可以用
public class OtherWebEnums : WebEnums
{
private static WebEnum _member4 = new WebEnum(4);
public static WebEnum Member4
{
get { return _member4; }
}
}
免责声明扩展:在设计方面,我敢打赌,有些人会不高兴看到它,因为它可能打破了无数的面向对象设计规则......但是它应该服务于...
是的,你可以使用design-time T4 text templates生成一个基于另一个枚举。
(您必须设置集名称是适合你的WebService的枚举。)
<#@ template debug="false" hostspecific="false" language="C#" #>
<#@ assembly name="$(SolutionDir)WebService\bin\Debug\WebService.Dll" #>
<#@ output extension=".cs" #>
enum GeneratedEnum
{
<# foreach(var member in Enum.GetValues(typeof(WebService.WebEnum))){ #>
<#= member #>,
<# } #>
AdditionalMember1,
AdditionalMember2
}
的GeneratedEnum
类型将在编译时创建的,并且看起来像这样:
enum GeneratedEnum
{
Member1,
Member2,
Member3,
AdditionalMember1,
AdditionalMember2
}
什么是其他枚举? –
你的意思是创建一个从WebEnum继承的新枚举吗?答案是不,我很害怕 – n8wrl
@ n8wrl,就是这样。我想我必须找到别的东西。 –