C#调用静态方法,它遵循子静态方法

时间:2018-02-11 12:10:19

标签: c#

我有一个模型(Structure)和另一个继承自此模型(Structure : StaticStructure

我还有一个控制器,它在Structure上调用静态方法:

// Controller
 Structure obj = Structure.PlaceInstance(StructurePrototypes[objectType])

// Structure model    
public static Structure PlaceInstance ( Structure prototype )

我想要的是拨打PlaceInstance的{​​{1}}。我面临的问题是类型。如您所见,我从Dictionary中获取原型,然后调用StaticStructure。但他们永远不会成为类型结构,他们可能是Structure.PlaceInstance或其他。

我基本上想要一个父类StructureStatic,其他类将继承自Structure。父结构类将保存每个结构可用的泛型方法,然后子类将包含与它们相关的特定方法。

我知道我无法覆盖静态方法,并且我知道这个方法不是抽象的,而整个StructureStatic类都不是抽象的。

一种想法是将控制器传递给类名,然后执行类似(伪代码)的操作:

Structure

编辑:

让我试着澄清一下这个问题。我曾经有一个大模型[className] obj = [className].PlaceInstance() ,但并非所有结构都使用所有这些方法,所以为了避免很多bool和if语句,我想拆分它们。

Structure是一个从XML文件填充的字典(不重要)。

StructurePrototypes

放置结构时,使用当前代码:

// the string is the ID
StructurePrototypes = new Dictionary<string, Structure>();

正如您所看到的,这假定为Structure obj = Structure.PlaceInstance( StructurePrototypes[objectType] ,但字典中的项目永远不会是Structure,它们都将是继承结构的模型。

所以我需要一些方法来调用实际模型上的Structure方法,并且可能会完全删除PlaceInstance上的PlaceInstance方法。

0 个答案:

没有答案