2009-09-11 125 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

相關問題