Мне нравится идея, куда ты идешь. Я более склонен оборачивать COM-объект, который я использую, в тип IDisposable, где этот тип предоставляет открытые члены COM-объекта (думаю: Adapter). Затем метод Dispose () в вашем классе будет обрабатывать сборку мусора COM-объекта.
Если вы используете много COM-объектов, вы можете наследовать от базового класса для обработки удаления. Я вообще не тестировал этот код, но обычно это то, о чем я думаю ...
public abstract class COMAdapter : IDisposable {
protected abstract object COMObject { get; }
public void Dispose() {
Marshal.FinalReleaseComObject(COMObject);
GC.SuppressFinalize(this);
}
}
public class ConcreteAdapter : COMAdapter {
private YourCOMType _comObject;
protected override object COMObject {
get { return _comObject; }
}
}