Я хочу иметь абстрактный класс 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)
{
}
Есть ли простой способ сделать это?Большую часть дней я играл с дженериками, и никто из тех, с кем я общался в Интернете, не смог найти решение.
Для тех из вас, кто считает, что вы видите решение:когда я пытался сделать это с помощью дженериков, это было довольно сложно, и из-за проблем с дисперсией он просто не хотел работать правильно.