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

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í)行
- 2 回答
- 0 關(guān)注
- 173 瀏覽
添加回答
舉報(bào)