You are creating a class that uses unmanaged resources. This class maintains references to managed resources on other objects. You need to ensure that users of this class can explicitly release resources when the class instance ceases to be needed. Which three actions should you perform? (Each correct answer presents part of the solution. Choose three.)
A.
Define the class such that it inherits from the WeakReference class.
B.
Define the class such that it implements the IDisposable interface.
C.
Create a class destructor that calls methods on other objects to release the managed resources.
D.
Create a class destructor that releases the unmanaged resources.
E.
Create a Dispose method that calls System.GC.Collect to force garbage collection.
F.
Create a Dispose method that releases unmanaged resources and calls methods on other objects to release the managed resources.