我编写了如下所述的C#代码,它使用静态方法从泛型类继承了一个类。我想调用子类的静态方法(继承自基类),而不必指定类型。
EDITED!更“真实”的代码
public class Rec
{
public string Name { get; set; }
public override string ToString() { return this.Name; }
public virtual void Load() { /* HERE IT READS A TEXT FILE AND LOAD THE NAME */ }
}
public class BaseClass<T> : Rec
{
public T Argument { get; set; }
public override void Load() { /* NOW IT LOADS ALSO THE ARGUMENT */ }
public static H Method<H>() where H : Rec, new()
{
H iH = new H();
iH.Load();
iH.Name += " " + iH.Argument.ToString();
return iH;
}
}
public class Child : BaseClass<string> { }
public class SomeOtherClass
{
public void Test()
{
Child i = Child.Method();
//instead of Child.Method<Child>();
}
}
因此,我不想调用method<h>()
而只是调用method()
,因此代码应该假设“h”是调用者类型。喜欢在:
我该怎么做?
答案 0 :(得分:3)
静态方法不会在C#
中继承有关潜在实施的想法,请参阅此答案:Stack Overflow whats-the-correct-alternative-to-static-method-inheritance
答案 1 :(得分:1)
您可以将method<h>
更改为method
并将其设为实例方法:
public class BaseClass<T> where T, new()
{
public T method() { /* RETURN SOMETHING */ }
}
然后按如下方式调用它:
public class ABC : Child
{
public void Test()
{
var iABC = this.method();
}
}