2016-01-01 18 views
0

我正在使用AForge的過濾器基類來實現我自己的過濾器。所以我要做的就是引用類的基類函數未在其他項目中公開

public sealed class SomeFilter : BaseInPlaceFilter2 { ... } 

當我創建在不同的項目中的過濾器的新實例(在這種情況下,一個控制檯項目),基本功能都沒有曝光,即我應該是什麼能夠做的是

SomeFilter s = new SomeFilter(); 
Bitmap bmp = new Bitmap(); 
... 
s.ApplyInPlace(bmp); 

s.ApplyInPlace(bmp)是從基類派生的。但是,創建實例時,它不可用。

通過試驗和錯誤我發現,除了過濾器類外,我還需要在控制檯項目的使用部分中包含AForge。但是,我認爲,當我從基類派生出來的時候,基本函數還包含在內?我想我不太瞭解這裏的系統程序。

+0

沒有不帶參數的ApplyInPlace()重載。非常重要的一點是,你發佈的代碼至少有* *給出repro的機率。 –

+0

謝謝你指出。我擴展了代碼位 – JoeyD

+0

編譯器給你什麼錯誤? –

回答

2

根據錯誤消息,您需要包含對AForge.Imaging的引用。

通常,如果項目A引用項目B和項目B引用項目C,則項目A必須引用項目C,如果它需要訪問項目C中定義的類型/方法(即使它們僅通過定義的類型在項目B中)。

+0

Aaah,好的。有沒有辦法「解耦」這個,所以基本上對於項目A只能引用項目B? – JoeyD

+1

@JoeyD,它是使用導致耦合的繼承。因此,將A與C分離的唯一方法是避免(公開公開)繼承。 –

相關問題