Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
MarshalByValueComponent.cs
Go to the documentation of this file.
2
3[Designer("System.Windows.Forms.Design.ComponentDocumentDesigner, System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", "System.ComponentModel.Design.IRootDesigner, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089")]
4[DesignerCategory("Component")]
5[TypeConverter(typeof(ComponentConverter))]
7{
8 private static readonly object s_eventDisposed = new object();
9
10 private ISite _site;
11
13
14 protected EventHandlerList Events => _events ?? (_events = new EventHandlerList());
15
16 [Browsable(false)]
18 public virtual ISite? Site
19 {
20 get
21 {
22 return _site;
23 }
24 set
25 {
26 _site = value;
27 }
28 }
29
30 [Browsable(false)]
32 public virtual IContainer? Container => _site?.Container;
33
34 [Browsable(false)]
36 public virtual bool DesignMode => _site?.DesignMode ?? false;
37
38 public event EventHandler? Disposed
39 {
40 add
41 {
42 Events.AddHandler(s_eventDisposed, value);
43 }
44 remove
45 {
46 Events.RemoveHandler(s_eventDisposed, value);
47 }
48 }
49
51 {
52 Dispose(disposing: false);
53 }
54
55 public void Dispose()
56 {
57 Dispose(disposing: true);
58 GC.SuppressFinalize(this);
59 }
60
61 protected virtual void Dispose(bool disposing)
62 {
63 if (disposing)
64 {
65 lock (this)
66 {
67 _site?.Container?.Remove(this);
69 }
70 }
71 }
72
73 public virtual object? GetService(Type service)
74 {
75 return _site?.GetService(service);
76 }
77
78 public override string? ToString()
79 {
80 ISite site = _site;
81 if (site != null)
82 {
83 return site.Name + " [" + GetType().FullName + "]";
84 }
85 return GetType().FullName;
86 }
87}
static readonly EventArgs Empty
Definition EventArgs.cs:9
static void SuppressFinalize(object obj)
Definition GC.cs:202
Definition GC.cs:8
void Remove(IComponent? component)
IContainer? Container
Definition ISite.cs:9
object? GetService(Type serviceType)
delegate void EventHandler(object? sender, EventArgs e)