静态类如何扩展方法

zhujiawei7 2013-01-21 02:05:13
我知道通过扩展方法对非静态类进行扩展
如:

static class MyExtensionMethods
{
internal static void Print(this Class1 c)
{
}
}


但是假如Class1是个静态类,是无法用作this参数的。有没有其他的办法呢?
因为我要为一个第三方的静态类增加几个方法。
...全文
559 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lugyedo 2015-01-07
  • 打赏
  • 举报
回复
引用 12 楼 nexthero 的回复:
看楼主的问题,我也想起来一个问题,比如Convert.ToInt32(string),当字符串为空时会出错,我现在想给Convert加一些方法,当不能转换的时候返回个默认值0,又不想自己重新写一个类,有什么办法呢
这个场景很经典啊,怎么办呢,大侠快来指点~~~
灰鸟会灰 2014-04-17
  • 打赏
  • 举报
回复
同问,同问啊
nexthero 2013-12-25
  • 打赏
  • 举报
回复
看楼主的问题,我也想起来一个问题,比如Convert.ToInt32(string),当字符串为空时会出错,我现在想给Convert加一些方法,当不能转换的时候返回个默认值0,又不想自己重新写一个类,有什么办法呢
XBodhi. 2013-01-21
  • 打赏
  • 举报
回复
引用 6 楼 gxingmin 的回复:
扩展方法就是方便直接对某类型的值进行某种操作 你现在是静态类的,还扩展方法干啥,直接再定义一个静态类,把方法加到这个静态类里
如果他说的就是 static Class A { static Class B { } } 调用方式为 A.B.
threenewbee 2013-01-21
  • 打赏
  • 举报
回复
自己写一个同名的静态类。
zhujiawei7 2013-01-21
  • 打赏
  • 举报
回复
引用 6 楼 gxingmin 的回复:
扩展方法就是方便直接对某类型的值进行某种操作 你现在是静态类的,还扩展方法干啥,直接再定义一个静态类,把方法加到这个静态类里
仔细想想好想是没什么大作用,是我自己太强迫症了吗哈哈哈
zhujiawei7 2013-01-21
  • 打赏
  • 举报
回复
我再描述清楚一点

public static class 未开源第三方静态类
{
   public static void Method1(){}
   public static void Method2(){}
   public static void Method3(){}
   // ...类里有几十个静态方法
}

public static class 扩展类
{
   public static void Method1()
   {
       未开源第三方静态类.Method1();
   }
   public static void Method2()
   {
       未开源第三方静态类.Method2();
   }
   public static void Method3()
   {
       未开源第三方静态类.Method3();
   }
   // ...调用几十个静态方法
}
我要为这个类添加几个方法。静态类又无法继承,如果自己写个类,调用几十个同名方法感觉有点蠢,所以问问有没有其他方法。
  • 打赏
  • 举报
回复
静态类不能拓展方法,而且也用不着。 附上实例类的拓展方法
using System;
using System.Collections.Generic;
using System.Text;

namespace 拓展方法
{
    class Program
    {
        static void Main(string[] args)
        {

            Class1 class1 = new Class1();
            class1.Add("");       
        }
    }

    public class Class1
    {
        private string str;
        public string Str { get; set; }

        public Class1()
        { }
    }

    public static class ClassAdd
    {
        public static void Add(this Class1 class1, string str)
        {
            class1.Str += str;
        }
    }
}
gxingmin 2013-01-21
  • 打赏
  • 举报
回复
扩展方法就是方便直接对某类型的值进行某种操作 你现在是静态类的,还扩展方法干啥,直接再定义一个静态类,把方法加到这个静态类里
种草德鲁伊 2013-01-21
  • 打赏
  • 举报
回复


static class MyExtensionMethods
{
   internal static void Print()
   {
         Class1.XXXX(); // 不需要引用
   }
}

XBodhi. 2013-01-21
  • 打赏
  • 举报
回复
Partial 
XBodhi. 2013-01-21
  • 打赏
  • 举报
回复
引用 1 楼 hjywyj 的回复:
自己写个类,继承MyExtensionMethods
你可以用 部分方法, 知道有部分类, 部分方法也可以的。


public artial  static void MethodName()
{
   //todo
}
cheng2005 2013-01-21
  • 打赏
  • 举报
回复
扩展方法说白了只是一种语法上简洁,在逻辑上是可以替代的。
  • 打赏
  • 举报
回复
自己写个类,继承MyExtensionMethods

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧