В настоящее время я пытаюсь переопределить функцию Remove для общего класса List-Class. Но я борюсь с одной крошечной частью моего подхода - со ссылкой на объект за пределами метода Remove.Переопределить списки Удалять функцию не удалось
public new void Remove(ref string item)
{
if (Count > 9)
{
Remove(this[0]);
}
base.Remove(item);
}
Этот метод не работает, потому что он не отменяет фактический метод Remove.
Кто-нибудь знает, как с этим справиться?
EDIT: в функции удаления я хочу вызвать метод для ссылочного объекта.
EDIT2: моя текущая версия
class SocketList<WebSocketConnection>
{
private List<WebSocketConnection> theList = new List<WebSocketConnection>();
public void Remove(ref WebSocketConnection obj)
{
obj.Dispose();
theList.Remove(obj);
// additional stuff
}
}
Но в этой версии не удается вызвать метод Dispose на который ссылается объект. Я получаю сообщение, в котором говорится, что для этого объекта нет такого метода.
EDIT3: Это класс, в котором я хочу, чтобы вызвать метод Dispose
public class WebSocketConnection : IWebSocketConnection
{
{...}
// Flag: Has Dispose already been called?
private bool disposed = false;
// Instantiate a SafeHandle instance.
private SafeHandle handle = new SafeFileHandle(IntPtr.Zero, true);
{...}
// Public implementation of Dispose pattern callable by consumers.
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
// Protected implementation of Dispose pattern.
protected virtual void Dispose(bool disposing)
{
if (disposed)
return;
if (disposing)
{
handle.Dispose();
// Free any other managed objects here.
//
}
// Free any unmanaged objects here.
//
disposed = true;
}
}
То, что вы хотите, просто невозможно. В чем причина этого? Это просто любопытство, или есть большая проблема, которую вы пытаетесь решить? Эта большая проблема может получить более полезные ответы. – hvd
Вы действительно хотите, чтобы 'ref string item'-signature? Какие типы элементов содержатся в вашем списке? Есть ли в нем только строки или какие-либо сложные объекты? – HimBromBeere
Вместо этого вы решили реализовать IList? – user6144226