2013-03-19 58 views
-2

我已提供第三方DLL。如何在C#中使用接口或抽象類?

我第一次嘗試啓動對象,像這樣:

TestClass MyClass = new TestClass(); 

但Visual Studio中告訴我使用的接口。

我從來沒有這樣做過,不知道從哪裏開始。

錯誤:

The Type 'MyClass.blabla' has no constructors defined Interope type 'MyClass.Subclass' cannot be embedded. Use the applicable interface instead.

+0

它告訴你使用什麼接口?你能在你的問題中發佈確切的錯誤信息嗎? – JaredPar 2013-03-19 15:44:20

+0

只要第三方DLL提供接口,如果沒有,你可以使用'var'關鍵字 – 2013-03-19 15:44:54

+1

這是一個COM API? – 2013-03-19 15:48:50

回答

0

這全依賴於TestClass的聲明方式。如果TestClass爲abstract,則不能直接創建其實例,而必須從TestClass的類Derived之一創建實例。

TestClass test = new TestClassDerived(); 

其中

class TestClassDerived : TestClass 
{ 

} 
+0

我試過這個,但它希望我在我的TestClassDerived中實現所有的TestClass函數。有數百個。我只想訪問DLL中已有的函數。 – Anonymous 2013-03-19 15:48:15

+0

如果有100個Method,他們必須編寫它!這就是面向對象編程的工作原理。 – 2013-03-19 15:49:31

+0

Visual Studio生成所有需要的方法,因此如果您只需要使用現有的非抽象方法,那麼它就不會太擔心。 – 2013-03-19 15:50:23

0

它可能會爲您提供某種形式的初始化方法或構造函數傳遞。你不能以你想要做的方式實例化抽象類或接口(即調用構造函數)

2

這很可能是因爲你使用的是COM類。如果是這樣的話,你很可能會想要寫:

ITest myTest = new TestClass(); 

COM包裝頻繁通過一個名爲TestClass伴生類暴露的ITest接口。但是,使用COM時,您(通過設計)通常只寫入接口(ITest),並且不想直接針對實現編寫代碼。