代码之家  ›  专栏  ›  技术社区  ›  BeemerGuy

如何扩展类,而不是实例?[复制品]

  •  3
  • BeemerGuy  · 技术社区  · 15 年前

    可能重复:
    Can you make an Extension Method Static/Shared?

    扩展方法很棒! 请原谅我的无知,但到目前为止,我只发现您可以扩展一个类来允许其实例上的方法,而不是类本身。

    这就是我要做的。
    我有一个这样的枚举:

    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) 扩展方法(如果可能)?

    3 回复  |  直到 14 年前
        1
  •  2
  •   KeithS    15 年前

    不能使静态方法像包含在另一个静态类中一样可调用。例如,您不能创建一个string.isNullOrblank()函数,该函数除了检查传递的字符串是否为空或零长度之外,还只检查传递的字符串是否为空白。您必须能够访问字符串类代码并在其中添加方法。

        2
  •  7
  •   Joachim VR    15 年前

        3
  •  0
  •   µBio    15 年前

    ((ViewType)null).ParseFromDescription( "Front View" );
    
    // defined like 
    public static ViewType( this ViewType me, string description )
    {
        // ignore the 'this' parameter, just parse etc ...
    }