我想做的是有一个字典,里面有不同的类类型,它们都实现了一个接口或有一个共享的父类。使用这个列表,我想从一个字符串中示例化正确的一个,标识我想要的一个。
因此,如果列表是类“B”、“c”和“d”,它们都继承自“a”,或者都实现了一个接口“a”,我想将这些类型加载到一个列表中,并将类名作为标识符,然后创建与列表中的字符串匹配的任何类。
在B、c和d类中,我将其作为初始化部分的一部分添加到字典中。
我希望这是有意义的。这的最终目标是有数据库驱动的定制。
我首先尝试使用一个所有类都实现的接口,并且有一个字典<string,Interface>。我似乎无法将构造函数作为接口的一部分包含在内,所以我转向了另一个想法。
我试图让我所有的类都继承一个基类,并使用一些抽象函数/过程。我创建了字典<string,TBaseClass>,但当我试图向它添加一个子类时,它给了我e2010不兼容的类型。
1条答案
按热度按时间92vpleto1#
如果所有的类都有一个公共的基类,你可以将它们的Meta类类型存储在字典中,然后在需要的时候构造它们,例如:
如果所有的类都有一个公共接口,你可以将工厂函数存储在字典中,然后在需要的时候调用它们,例如: