using System;
using System.ComponentModel;
+using System.Runtime.InteropServices;
namespace System.ComponentModel {
[DesignerCategory ("Component")]
+ [ComVisible (true)]
+ [ClassInterface (ClassInterfaceType.AutoDispatch)]
public class Component : MarshalByRefObject, IComponent, IDisposable
{
event_handlers = null;
}
+ protected virtual bool CanRaiseEvents {
+ get { return false; }
+ }
+
+ [Browsable (false), DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
+ public virtual ISite Site
+ {
+ get { return mySite; }
+ set { mySite = value; }
+ }
+
[Browsable (false), DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
public IContainer Container {
get {
}
}
- [Browsable (false), DesignerSerializationVisibility (DesignerSerializationVisibility.Hidden)]
- public virtual ISite Site {
- get { return mySite; }
- set { mySite = value; }
- }
-
~Component()
{
Dispose (false);
protected virtual void Dispose (bool release_all)
{
if (release_all) {
+ if (mySite != null && mySite.Container != null)
+ mySite.Container.Remove (this);
EventHandler eh = (EventHandler) Events [disposedEvent];
if (eh != null)
eh (this, EventArgs.Empty);
}
- mySite = null;
}
protected virtual object GetService (Type service)