我想写一个扩展方法,扩展我班级的一些成员。具体来说,我想扩展一个枚举。但是,这不起作用:
namespace mynamespace
{
public class myclass
{
public enum ErrorCodes
{
Error1, Error2, Error3
}
public static double GetDouble(this ErrorCodes ErrorCode)
{
return (double)((int)ErrorCode);
}
public void myfunc()
{
ErrorCodes mycode;
MessageBox.Show(mycode.GetDouble().ToString());
}
}
}
具体来说,它不会将GetDouble()识别为扩展名。这不仅仅适用于枚举,我尝试为双打创建扩展方法,也遇到了同样的问题。
答案 0 :(得分:5)
您只能在顶级,静态,非泛型类中编写扩展方法,但它们可以扩展嵌套类。这是一个完整的示例,基于您的代码:
using System;
public static class Extensions
{
public static double GetDouble(this Outer.ErrorCode code)
{
return (double)(int)code;
}
}
public class Outer
{
public enum ErrorCode
{
Error1, Error2, Error3
}
}
public class Test
{
public static void Main()
{
Outer.ErrorCode code = Outer.ErrorCode.Error1;
Console.WriteLine(code.GetDouble());
}
}
答案 1 :(得分:2)