簡體   English   中英

C# - 是否可以使用新接口擴展現有的內置類

[英]C# - Is it possible to extend an existing built-in class with a new Interface

我剛剛學習C#,現在我遇到了問題。 :-)在C ++中,我喜歡使用“const reference”作為參數來避免被調用的方法改變我傳遞的對象。

我讀到某個地方,我可以做某事。 使用Interfaces在C#中類似。 在界面中我只想放一些“getters”來允許該方法只讀訪問我的對象。

現在猜測,我想把我的C#方法傳遞給像“List”這樣的內置容器。 但我想避免該方法改變該列表中的內容。 只讀!

我的第一個想法是: - 我創建了一個名為IMyOwnInterface的新接口,它也使用接口IList

  • 我的新界面IMyOwnInterface只包含“getters”

  • 我把方法改成了...... 喜歡MyLittleMethod(IMyOwnInterface if)

  • 現在方法“MyLittleMethod”可以看到“getters”,我放在我自己的界面而不是IList的“setters”

這可能嗎? 有人能給我一個暗示嗎?

是的,我相信這會奏效。 試一試,讓我們知道它是如何工作的:D

答案是不:

IList沒有實現IMyOwnInterface,因此您無法強制轉換它。

IList list = ...
MyLittleMethod((IMyOwnInterface)list)    // Compiler errror here

在這種情況下,您可以使用ReadOnlycollection:

IList list = ...
MyLittleMethod(new ReadOnlyCollection(list))

使用接口,它基本上只能通過繼承或一些代理東西(使用適配器類顯式,通過RealProxy實現,或使用庫來執行類似的操作,例如LinFu)。

但是,開箱即用,您可以使用委托對具有匹配簽名的單個方法進行后期綁定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM