静态方法不是实例对象所拥有的,不可能在子类中继承,也没必要在子类继承,它不是同某一具体对象相关的.但你的问题完全可以这样解决:using System;namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
SubClass sub = new SubClass();
sub.method();
}
}
class StaticMethods
{
internal static void Output()
{
Console.WriteLine("This is a output in static method.");
}
}
    abstract class TestClass
{
public virtual void method()
{
StaticMethods.Output();
}
}
class SubClass :TestClass
{ }
}
这样,也就等于是在所有抽像类的派生类中都"继承了"静态方法.

解决方案 »

  1.   

    比如有一组类,每个类都能有一个方法,这个方法返回这个类有多少个属性,属性的名字是什么
    (当然,这只是打个比方),所以每个类都继承自一个公共基类,这个类有一个方法名叫
    GetPropertities(),当然,这只跟类型有关,所以,定义成静态方法应当是当然的吧,由于这一组类有很多人在写,所以我想强制别人写的时候也必须重写这个方法,不过由于这个方法是静态的,不能是abstract 或 virtual的,所以在公共基类中定义的时候必须实现它,可这样别人在继承这个类的时候,就有可能忽略这个方法,不进行重写,这个应当是被避免的。
    其实有一个公共接口是个解决办法,不过接口不能定义静态方法,并且,实现接口的类好像也不能把接口中的方法实现为静态的,不知道有什么好的方法?
      

  2.   

    刚刚说的不是太明白,haiwangstar可能误解了我的意思了,不过还是谢谢这么热心的回答
      

  3.   

    你说的应该是每个类的 RuntimeClass 对象。
    在C#里面用 typeof 的方式取得。你如果想自己实现一个类似的机制,可以看看VC的CRuntimeClass实现
      

  4.   

    TO 牛牛:.NET中的反射很好的解决了运行时的类型问题,如果你就是为了在运行时动态获得类的信息(包括你说的有多少属性,每个属性的名字)直接用反射就行了,没必要自己去实现它.即便你要自己实现类似的机制,我以为,也不应该做为静态方法来实现,Object类的GetType函数,同你说的情况很相近,但是这并不是做为静态方法定义的.
      

  5.   

    感谢大家的回答,不过我上面说了,那只是个例子,我也不是想在运行期间得到类型的信息,我想实现的是一个为一个类提供一种服务的方法,比如,我有一个hashtable,里面有许多命名信息,我想将它转换成一个特定类的实例对象,当然用强制转换是不行的,因此我写的类里有这么一个方法,能够通过一个特定的hashtable对象,返回一个类本身的实例,当然你可能说用构造函数新建一个实例然后挨个属性赋值也可以办到,不过由于某种原因这么做不可行,所以,现在只有类本身知道怎么做这种转换,所以想为每个类提供一种服务,就类似于上面的方法,每个类加入一个静态方法,这个方法负责这种转换,于是就出现了上面的问题,怎么才能让这一组类继承自一个公共的基类,并且保证这个服务方法必须被继承的类重写,如果不是静态的话很好办,只要是abstract或virtual的方法就可以了,可是这个服务方法对类来说是静态的,不用创建实例就可以调用,这样的话???怎么定义这个基类呢?