2009-09-11 122 views
0

我有两个类都从相同的接口继承。 我希望有时使用一个类运行网站,有时使用另一个。 想根据配置值决定使用哪一个。 我可以使用web.config来决定从哪个类创建当前实例吗?我可以基于web.config中的值实例化一个类型吗?

+0

问题标题和问题不太匹配.... – 2009-09-11 03:00:51

+0

...你想显式地加载包含specfic类型的程序集,或者仅仅能够在运行时改变一个具体类型? – 2009-09-11 03:01:41

+0

也许,“我可以基于web.config中的值实例化一个类型吗?” – 2009-09-11 03:09:36

回答

3

是的。

创建一个工厂方法,返回IMyInterface类型的对象。传入配置值作为参数以确定要创建哪个具体对象。

+0

这是正确的想法,这将帮助我。 – 2009-09-11 03:05:32

1

确实可以。您感兴趣的是Type的字段AssemblyQualifiedName。因此,让你的类型,做:

myObj.GetType().AssemblyQualifiedName 

而这样做的结果写入到您的配置:

<add key="TypeName" Value="...." /> 

然后,你需要考虑一下它的构造了,并且它可以被加载像所以:

Type.GetType("...").GetConstructor(...).Invoke(...); 
+0

顺便说一句,那downvote不是我... – 2009-09-11 03:06:19

+0

没有忧虑米奇,我猜这是OP给他的评论给你:) – 2009-09-11 03:07:12

+0

投票,因为它可能是正确的答案,取决于原来的问题是如何解释 – 2009-09-11 03:07:28

相关问题