亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

標記界面的目的是什么?

標記界面的目的是什么?

冉冉說 2019-08-16 17:10:37
標記界面的目的是什么?標記界面的目的是什么?
查看完整描述

3 回答

?
元芳怎么了

TA貢獻1798條經驗 獲得超7個贊

標記接口用于將類的功能標記為在運行時實現特定接口。

界面設計.NET類型設計準則-界面設計勸阻贊成使用C#屬性的使用的標記接口,但作為@Jay Bazuzi指出,更容易檢查比屬性標記的接口:o is I

所以不是這樣的:

public interface IFooAssignable {} public class FooAssignableAttribute : IFooAssignable {
    ...}

.NET指南建議您這樣做:

public class FooAssignableAttribute : Attribute {
    ...}[FooAssignable]public class Foo {    
   ...}


查看完整回答
反對 回復 2019-08-16
?
慕后森

TA貢獻1802條經驗 獲得超5個贊

由于每個其他答案都說“應該避免它們”,因此解釋原因會很有用。

首先,為什么使用標記接口:它們的存在是為了允許使用實現它的對象的代碼檢查它們是否實現了所述接口,如果有,則以不同的方式處理對象。

這種方法的問題在于它破壞了封裝。對象本身現在可以間接控制外部使用方式。此外,它了解將要使用的系統。通過應用標記接口,類定義表明它希望用于檢查標記存在的某個地方。它隱含地了解它所使用的環境,并試圖定義它應該如何被使用。這違背了封裝的想法,因為它了解完全在其自身范圍之外存在的系統的一部分的實現。

在實際水平上,這降低了可移植性和可重用性。如果在不同的應用程序中重用該類,則需要同時復制該接口,并且在新環境中它可能沒有任何意義,使其完全冗余。

因此,“標記”是關于類的元數據。這個元數據不是由類本身使用,只對(某些?。┩獠靠蛻舳舜a有意義,因此它可以以某種方式處理對象。因為它只對客戶端代碼有意義,所以元數據應該在客戶端代碼中,而不是類API。

一個“標記接口”和普通接口之間的區別是,方法的接口告訴外面的世界怎么可以使用,而空的接口意味著它告訴外面的世界如何應該被使用。


查看完整回答
反對 回復 2019-08-16
  • 3 回答
  • 0 關注
  • 798 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號