I have a COM object implemented in C# (see below). It owns some IDisposable resource. Where should I dispose that resource?
Looks like finalizer is never called and I cannot overload IUnknown::Release method.
[ComVisible(true)]
[Guid("1992EC2F-087A-4264-B5B2-5E2E757F1A75")]
public class ComServer
{
    IDisposable disposableResource; //where to dispose IDisposable resource?
    public ComServer() 
    {
        disposableResource = File.Open(@"c:\somefile.txt", FileMode.OpenOrCreate); 
        Console.WriteLine("ComServer.ComServer");
    }
    ~ComServer() //finalizer is never called!
    {
        disposableResource.Dispose(); 
        Console.WriteLine("ComServer.~ComServer");
    }
}
Edited: the COM server is used in a native third party application, it's impossible to call Dispose on client side or make any changes there.
 
     
     
    