1
假設我有下面的類層次結構庫:我應該在哪些地方爲類似的類組添加通用功能?
interface IDevice
{
void Connect(DeviceAdderss address);
void Disconnect();
}
public abstract DeviceBase : IDevice
{
// IDevice implementation plus other stuff
}
public DeviceA : DeviceBase
{
// Some device A specific stuff
}
public DeviceB : DeviceBase
{
// Some device B specific stuff
}
現在,我想在我的WPF應用程序中使用這個庫。例如,我需要向每個設備添加一些命令(ICommand對象:RelayCommand或其他)。此外,我想以相同的方式使用WPF應用程序中的所有設備(即它們都必須實現相同的接口或具有相同的基類)。
所以問題是:我應該在哪裏添加額外的「wpf」功能?
我可以看到2種可能的方法:
1)將這個功能的iDevice或DeviceBase - 但我不喜歡這樣,因爲庫可以在不同的應用程序(的WinForms,控制檯等)一起使用,所以在某些情況下它是不需要的。
2)建立在我的WPF應用程序「包裝」類,像這樣:
class DeviceWrapper<T> : INotifyPropertyChanged
where T : DeviceBase
{
public T Device { .. }
public ICommand ConnectCommand { .. }
public ICommand DisconnectCommand { .. }
//... other stuff
}
這種方法看起來更好,但在這種情況下,我必須創建太多類似的包裝(如果設備有一些輕微不同之處)...
謝謝,但所有設備都需要共享功能,只需在設備間進行小改動即可。 – kurchavy
在這種情況下,我會按照您的方法2創建Wpf專用設備類,這些設備類是Wpf應用程序內部的內容,而不是代碼庫,它擴展了標準設備類的功能,僅使用Wpf應用程序所需的功能。 –