根据接口字符串名称实例化类

时间:2012-02-27 02:12:24

标签: c# interface

我有一个实现这样的接口的类;

... = new Location<ICafe>();
... = new Location<IBusiness>();
etc

如果我想扩展我需要编辑代码的Location类型的数量。

有没有办法可以根据接口的字符串名称实例化类?

所以我会从数据库中获取Cafe或Business,并且我想使用接口的字符串名称来实例化上述内容。

修改

我应该注意,我稍后会在代码中使用ICafe,IBusiness等来确定这是什么类型的项目以及在屏幕上显示的内容。

2 个答案:

答案 0 :(得分:4)

是的,反射会让你这样做,但会有几个步骤:

答案 1 :(得分:2)

在我看来,你可能会因为更加抽象而受益。有什么理由你不能有一个名为的超接口:

interface IAbstractLocation 

然后,使用适当的接口创建具体类,但是使用从AbstractLocation类型继承的接口:

interface ICafe : IAbstractLocation

interface IBusiness : IAbstractLocation

然后你将有一种类型:

...Location<IAbstractLocation>();

哪个应该处理从IAbstractLocation接口继承的任何新类型。