我有一个模型(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
方法。