【发布时间】:2015-03-20 13:54:59
【问题描述】:
这是我想要完成的示例:
abstract class DoSomething
{
static void DoWhateverItIsThatIDo()
{
Console.WriteLine("You asked the abstract class to work. Too bad.");
}
}
class InspireMe : DoSomething
{
static void DoWhateverItIsThatIDo()
{
Console.WriteLine("You are amazing.");
}
}
class InsultMe : DoSomething
{
static void DoWhateverItIsThatIDo()
{
Console.WriteLine("You aren't worth it.");
}
}
class Program
{
static void Main()
{
DoSomething worker = InsultMe;
worker.DoWhateverItIsThatIDo();
worker = InspireMe;
worker.DoWhateverItIsThatIDo();
}
}
我来自 Python 背景,其中方法本身可以是一个变量,然后可以调用它。看起来 C# 没有这个概念,但我正在尝试完成类似的事情。
我的想法是我想要一个可以是抽象类型的变量,以便在其中可以存在许多不同类型的子类型。所有这些亚型都有一定的方法。我希望能够将这些子类型中的任何一个分配给这个抽象类型的变量,然后调用子类型中存在的 static 方法。
在 C# 术语中,我希望能够将 class 分配给变量,而不是类的 instance,然后调用该类的静态方法。
工厂听起来可能走在正确的道路上,但我不确定工厂本身如何能够生成对类的这些引用(而不是创建实例)。
我可以修改它以使用实例,但假设我想要生成每种类型的类的静态方法,所有这些仍然从基类型继承。
我觉得最有可能做到这一点 - 有人可以建议吗?
【问题讨论】:
-
方法可以是变量,在某种意义上:stackoverflow.com/questions/6695537/…
-
Action workerMethod = InspireMe.DoWhateverItIsThatIDo; workerMethod();怎么样?不完全是你写的,但如果你想要一个实际的worker对象,你可以在其上调用多个方法,那么你不应该使用静态方法。
标签: c# inheritance static-methods