我們希望對屬於類庫一部分的類中的接口執行「部分顯式實現」。通過部分顯式實現,我的意思是隱式地實現接口的某些成員,並明確地實現相同接口的其餘成員。 請讓我們知道我們需要注意的可能的問題。.NET中接口的部分顯式實現
更具體地說,假設我們有如下定義的接口IDriver
。 IDriver
接口定義了所有驅動程序的基本功能。
interface IDriver
{
IDriverIdentity DriverIdentity { get; }
IDriverOperation Operation { get; }
IDriverUtility Utility { get; }
}
public class MyDriver1 : IDriver
{
// Implement the first and second member of IDriver implicitly
public IDriverIdentity DriverIdentity
{
get
{
// return a IDriverIdentity object that user can use to assess Identity operations...
}
}
public IDriverOperation Operation
{
get
{
// return a IDriverOperation object that user can use to access DriverOperation related properties and members..
}
}
// Implement the last member of interface explicitly
IDriverUtility IDriver.Utility
{
get
{
// return a IDriverUtility object that user can use to access fundamental utility operations that is mandated for every "Driver" object...
}
}
public MyDriver1Utility Utility
{
get
{
// return MyDriver1Utility object that user can use to access utility operations available in this driver ...
}
}
}
同樣讓我們假設我們有實現DriverIdentity
和Operation
含蓄和Utility
明確MyDriver2
,MyDriver3
等。
在我們想實現DriverIdentity
和Operation
含蓄,使得用戶在使用不同的Driver
對象有DriverIdentity
和Operation
一致視圖所有Driver
類。 但是,我們希望明確實現Utility
成員,並在從驅動程序對象訪問時提供特定於該驅動程序的其他實用程序操作。
我們希望瞭解在這種情況下部分顯式實施的任何可能的副作用/後果。請讓我們知道你的意見。
在此先感謝!
如果類實現接口,則'MyDriver1Utility'應該已經包含'IDriverUtility'的所有操作。你爲什麼需要兩個?如果你確實需要兩個,你不應該使用兩個屬性? – Kobi
好問題。我不會考慮混合隱式/顯式實現,但我很想聽到這個問題的答案。 –
從我的經驗來看,最大的一個是遵循代碼。我繼承了一個設計,它依賴於這個manouver,試圖讓你的腦袋圍繞它正在做的事情,而你對這個意圖的理解是困難的。不要因此而發瘋。 –