我想抽象類Server
與一個抽象方法Initialize
傳遞參考IConnection
引用。從那裏,從這裏衍生出來的一個類應該能夠基本上專門化IConnection
對象,其實現Initialize
。這很好,除了我想要兩種抽象方法:DataSent
和DataReceived
,我想在他們的簽名中使用專用類型,也許是通過泛型。我如何專門爲一個類的繼承者提供參數類型?
像這樣的東西是什麼,我想:
public override void Initialize(ref IConnection connection)
{
connection = new MySpecialConnection(connection);
}
public override void DataSent(MySpecialConnection connection, byte[] data)
{
}
public override void DataReceived(MySpecialConnection connection, byte[] data)
{
}
是否有一個簡單的方法來做到這一點?我一直在用泛型玩弄幾天的更好的一部分,沒有人在網上與我交談過,能夠想出一個解決方案。
對於那些認爲你會看到解決方案的人來說:當我嘗試用泛型來做這件事時,它非常複雜,並且由於差異問題,它只是不想工作正確。
Initialize()中的'connection'似乎是一個屬性。它是否必須與'DataSent()'和'DataReceived()'的參數'connection'區分開來? –
它不一定是,但爲了易用性,它應該是。否則,如果需要任何狀態信息,最終必須將「連接」從「連接」更改爲更專用的類型。我們的想法是遠離SocketAsyncEventArgs.UserToken之類的狀態標記,並專門化整個類型來表示連接的狀態。 –