扩展方法很棒! 请原谅我的无知,但到目前为止,我只发现你可以扩展一个类来允许其实例上的方法,但不是类本身。
这就是我要做的事 我有一个这样的枚举:
enum ViewType
{
Front_View,
Back_View
}
我已经创建了一个扩展方法ToDescription()
来显示视图类型的用户友好的文本表示,如下所示:
ViewType thisview = ViewType.Front_View;
string thisviewtext = thisview.ToDescription(); // translates to "Front View"
但是后来在代码中,我希望从该转换中解析回类型,如果假设我可以扩展枚举类型本身,就像这个潜在的代码:
// !!!NOT REAL CODE YET!!!
// translate to value ViewType.FrontView
ViewType newview = ViewType.ParseFromDescription("Front View");
如何实施ParseFromDescription(string)
扩展方法(如果可能)?
答案 0 :(得分:7)
你做不到。您可以定义包含该方法的静态助手类ViewTypeTools。扩展方法基本上是相同的,但写得更好。
答案 1 :(得分:2)
您无法使静态方法可调用,就好像它包含在另一个静态类中一样。例如,您不能创建一个String.IsNullOrBlank()函数,该函数除了为null或零长度外,还检查传递的字符串是否只有空格。您必须能够访问String类代码并在那里添加方法。
为了获得你想要的结果,我将从字符串开始并实现一个扩展方法ParseDescriptionToViewType(),它将字符串作为其“this”参数并输出ViewType。
答案 2 :(得分:0)
另一个选项(kludgy),我没有测试,但我认为会起作用
((ViewType)null).ParseFromDescription( "Front View" );
// defined like
public static ViewType( this ViewType me, string description )
{
// ignore the 'this' parameter, just parse etc ...
}