第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

在C#中公開子接口方法

在C#中公開子接口方法

C#
躍然一笑 2021-04-30 15:19:47
我們有一個(gè)Manager類,它公開了IDevice類型的屬性,public interface IDevice {    string GetId();}public class Manager{    public IDevice Device    {     get;    }}現(xiàn)在,我有了一個(gè)從IDevice擴(kuò)展的新接口,public interface IBleDevice : IDevice{   string GetBleId();}有沒有一種方法可以將IBleDevice的方法公開給具有相同父引用(IDevice)的類的使用者而無需強(qiáng)制轉(zhuǎn)換?例如:void main(){  new Manager().Device.GetBleId(); // which requires casting now}
查看完整描述

2 回答

?
一只萌萌小番薯

TA貢獻(xiàn)1795條經(jīng)驗(yàn) 獲得超7個(gè)贊

如何使用通用方法。


public interface IDevice

{

    string GetId();

}


public class Manager

{


    public TResult GetDevice<TResult>() 

        where TResult : IDevice

    {

        return (TResult)Device;

    }


    public IDevice Device

    {

        get;

    }

}


public interface IBleDevice : IDevice

{

    string GetBleId();

}

您可以這樣使用。


new Manager().GetDevice<IBleDevice>().GetBleId(); // which requires casting now


查看完整回答
反對 回復(fù) 2021-05-16
?
富國滬深

TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊

如您所說,如果使用者不了解IBleDevice,則可以在管理器類中為設(shè)備屬性使用“動態(tài)”類型。像這樣:


public dynamic Device

    {

     get;

    }

然后消費(fèi)者可以寫


 new Manager().Device.GetBleId();

而且您將不會獲得任何編譯錯(cuò)誤,并且在運(yùn)行時(shí)GetBleId也將執(zhí)行


查看完整回答
反對 回復(fù) 2021-05-16
  • 2 回答
  • 0 關(guān)注
  • 173 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號