Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / CompMod / System / ComponentModel / Component.cs / 1 / Component.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.ComponentModel {
using System;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Runtime.InteropServices;
using System.Security.Permissions;
///
/// Provides the default implementation for the
///
/// interface and enables object-sharing between applications.
///
[
ComVisible(true),
ClassInterface(ClassInterfaceType.AutoDispatch),
DesignerCategory("Component")
]
public class Component : MarshalByRefObject, IComponent {
///
/// Static hask key for the Disposed event. This field is read-only.
///
private static readonly object EventDisposed = new object();
private ISite site;
private EventHandlerList events;
~Component() {
Dispose(false);
}
///
/// This property returns true if the component is in a mode that supports
/// raising events. By default, components always support raising their events
/// and therefore this method always returns true. You can override this method
/// in a deriving class and change it to return false when needed. if the return
/// value of this method is false, the EventList collection returned by the Events
/// property will always return null for an event. Events can still be added and
/// removed from the collection, but retrieving them through the collection's Item
/// property will always return null.
///
protected virtual bool CanRaiseEvents
{
get
{
return true;
}
}
///
/// Internal API that allows the event handler list class to access the
/// CanRaiseEvents property.
///
internal bool CanRaiseEventsInternal
{
get
{
return CanRaiseEvents;
}
}
///
/// Adds a event handler to listen to the Disposed event on the component.
///
[
Browsable(false),
EditorBrowsable(EditorBrowsableState.Advanced)
]
public event EventHandler Disposed {
add {
Events.AddHandler(EventDisposed, value);
}
remove {
Events.RemoveHandler(EventDisposed, value);
}
}
///
/// Gets the list of event handlers that are attached to this component.
///
protected EventHandlerList Events {
get {
if (events == null) {
events = new EventHandlerList(this);
}
return events;
}
}
///
///
/// Gets or sets the site of the
/// .
///
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public virtual ISite Site {
get { return site;}
set { site = value;}
}
///
///
/// Disposes of the
/// .
///
///
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2213:DisposableFieldsShouldBeDisposed")]
public void Dispose() {
Dispose(true);
GC.SuppressFinalize(this);
}
///
///
/// Disposes all the resources associated with this component.
/// If disposing is false then you must never touch any other
/// managed objects, as they may already be finalized. When
/// in this state you should dispose any native resources
/// that you have a reference to.
///
///
/// When disposing is true then you should dispose all data
/// and objects you have references to. The normal implementation
/// of this method would look something like:
///
///
/// public void Dispose() {
/// Dispose(true);
/// GC.SuppressFinalize(this);
/// }
///
/// protected virtual void Dispose(bool disposing) {
/// if (disposing) {
/// if (myobject != null) {
/// myobject.Dispose();
/// myobject = null;
/// }
/// }
/// if (myhandle != IntPtr.Zero) {
/// NativeMethods.Release(myhandle);
/// myhandle = IntPtr.Zero;
/// }
/// }
///
/// ~MyClass() {
/// Dispose(false);
/// }
///
///
/// For base classes, you should never override the Finalier (~Class in C#)
/// or the Dispose method that takes no arguments, rather you should
/// always override the Dispose method that takes a bool.
///
///
/// protected override void Dispose(bool disposing) {
/// if (disposing) {
/// if (myobject != null) {
/// myobject.Dispose();
/// myobject = null;
/// }
/// }
/// if (myhandle != IntPtr.Zero) {
/// NativeMethods.Release(myhandle);
/// myhandle = IntPtr.Zero;
/// }
/// base.Dispose(disposing);
/// }
///
///
protected virtual void Dispose(bool disposing) {
if (disposing) {
lock(this) {
if (site != null && site.Container != null) {
site.Container.Remove(this);
}
if (events != null) {
EventHandler handler = (EventHandler)events[EventDisposed];
if (handler != null) handler(this, EventArgs.Empty);
}
}
}
}
// Returns the component's container.
//
///
///
/// Returns the
/// that contains the
/// .
///
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public IContainer Container {
get {
ISite s = site;
return s == null? null : s.Container;
}
}
///
///
/// Returns an object representing a service provided by
/// the
/// .
///
///
protected virtual object GetService(Type service) {
ISite s = site;
return((s== null) ? null : s.GetService(service));
}
///
///
/// Gets a value indicating whether the
/// is currently in design mode.
///
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
protected bool DesignMode {
get {
ISite s = site;
return(s == null) ? false : s.DesignMode;
}
}
///
///
///
/// Returns a containing the name of the , if any. This method should not be
/// overridden. For
/// internal use only.
///
///
public override String ToString() {
ISite s = site;
if (s != null)
return s.Name + " [" + GetType().FullName + "]";
else
return GetType().FullName;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.ComponentModel {
using System;
using System.ComponentModel.Design;
using System.ComponentModel.Design.Serialization;
using System.Runtime.InteropServices;
using System.Security.Permissions;
///
/// Provides the default implementation for the
///
/// interface and enables object-sharing between applications.
///
[
ComVisible(true),
ClassInterface(ClassInterfaceType.AutoDispatch),
DesignerCategory("Component")
]
public class Component : MarshalByRefObject, IComponent {
///
/// Static hask key for the Disposed event. This field is read-only.
///
private static readonly object EventDisposed = new object();
private ISite site;
private EventHandlerList events;
~Component() {
Dispose(false);
}
///
/// This property returns true if the component is in a mode that supports
/// raising events. By default, components always support raising their events
/// and therefore this method always returns true. You can override this method
/// in a deriving class and change it to return false when needed. if the return
/// value of this method is false, the EventList collection returned by the Events
/// property will always return null for an event. Events can still be added and
/// removed from the collection, but retrieving them through the collection's Item
/// property will always return null.
///
protected virtual bool CanRaiseEvents
{
get
{
return true;
}
}
///
/// Internal API that allows the event handler list class to access the
/// CanRaiseEvents property.
///
internal bool CanRaiseEventsInternal
{
get
{
return CanRaiseEvents;
}
}
///
/// Adds a event handler to listen to the Disposed event on the component.
///
[
Browsable(false),
EditorBrowsable(EditorBrowsableState.Advanced)
]
public event EventHandler Disposed {
add {
Events.AddHandler(EventDisposed, value);
}
remove {
Events.RemoveHandler(EventDisposed, value);
}
}
///
/// Gets the list of event handlers that are attached to this component.
///
protected EventHandlerList Events {
get {
if (events == null) {
events = new EventHandlerList(this);
}
return events;
}
}
///
///
/// Gets or sets the site of the
/// .
///
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public virtual ISite Site {
get { return site;}
set { site = value;}
}
///
///
/// Disposes of the
/// .
///
///
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2213:DisposableFieldsShouldBeDisposed")]
public void Dispose() {
Dispose(true);
GC.SuppressFinalize(this);
}
///
///
/// Disposes all the resources associated with this component.
/// If disposing is false then you must never touch any other
/// managed objects, as they may already be finalized. When
/// in this state you should dispose any native resources
/// that you have a reference to.
///
///
/// When disposing is true then you should dispose all data
/// and objects you have references to. The normal implementation
/// of this method would look something like:
///
///
/// public void Dispose() {
/// Dispose(true);
/// GC.SuppressFinalize(this);
/// }
///
/// protected virtual void Dispose(bool disposing) {
/// if (disposing) {
/// if (myobject != null) {
/// myobject.Dispose();
/// myobject = null;
/// }
/// }
/// if (myhandle != IntPtr.Zero) {
/// NativeMethods.Release(myhandle);
/// myhandle = IntPtr.Zero;
/// }
/// }
///
/// ~MyClass() {
/// Dispose(false);
/// }
///
///
/// For base classes, you should never override the Finalier (~Class in C#)
/// or the Dispose method that takes no arguments, rather you should
/// always override the Dispose method that takes a bool.
///
///
/// protected override void Dispose(bool disposing) {
/// if (disposing) {
/// if (myobject != null) {
/// myobject.Dispose();
/// myobject = null;
/// }
/// }
/// if (myhandle != IntPtr.Zero) {
/// NativeMethods.Release(myhandle);
/// myhandle = IntPtr.Zero;
/// }
/// base.Dispose(disposing);
/// }
///
///
protected virtual void Dispose(bool disposing) {
if (disposing) {
lock(this) {
if (site != null && site.Container != null) {
site.Container.Remove(this);
}
if (events != null) {
EventHandler handler = (EventHandler)events[EventDisposed];
if (handler != null) handler(this, EventArgs.Empty);
}
}
}
}
// Returns the component's container.
//
///
///
/// Returns the
/// that contains the
/// .
///
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
public IContainer Container {
get {
ISite s = site;
return s == null? null : s.Container;
}
}
///
///
/// Returns an object representing a service provided by
/// the
/// .
///
///
protected virtual object GetService(Type service) {
ISite s = site;
return((s== null) ? null : s.GetService(service));
}
///
///
/// Gets a value indicating whether the
/// is currently in design mode.
///
///
[
Browsable(false),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)
]
protected bool DesignMode {
get {
ISite s = site;
return(s == null) ? false : s.DesignMode;
}
}
///
///
///
/// Returns a containing the name of the , if any. This method should not be
/// overridden. For
/// internal use only.
///
///
public override String ToString() {
ISite s = site;
if (s != null)
return s.Name + " [" + GetType().FullName + "]";
else
return GetType().FullName;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- _NTAuthentication.cs
- ConfigPathUtility.cs
- CustomValidator.cs
- GridViewRowEventArgs.cs
- CodeTypeMember.cs
- DataGridTable.cs
- PublisherIdentityPermission.cs
- SqlClientFactory.cs
- DeclarativeConditionsCollection.cs
- RequestSecurityTokenForRemoteTokenFactory.cs
- HierarchicalDataBoundControlAdapter.cs
- GorillaCodec.cs
- MessageSecurityOverHttpElement.cs
- EtwTrackingBehaviorElement.cs
- CompleteWizardStep.cs
- TemplateBindingExpression.cs
- DataGridViewRowPrePaintEventArgs.cs
- FormatConvertedBitmap.cs
- BufferCache.cs
- Viewport3DAutomationPeer.cs
- ObjectNavigationPropertyMapping.cs
- Wrapper.cs
- SqlCommand.cs
- TextRunTypographyProperties.cs
- FacetValueContainer.cs
- SqlDataReaderSmi.cs
- EventLogPermissionHolder.cs
- DocumentReferenceCollection.cs
- CompilationSection.cs
- UnicodeEncoding.cs
- ImageCodecInfoPrivate.cs
- VirtualDirectoryMapping.cs
- basecomparevalidator.cs
- BitSet.cs
- PrintPreviewDialog.cs
- TableDetailsCollection.cs
- StorageAssociationSetMapping.cs
- AdjustableArrowCap.cs
- _PooledStream.cs
- ServiceNotStartedException.cs
- BlurBitmapEffect.cs
- WebBrowserNavigatingEventHandler.cs
- QuadraticBezierSegment.cs
- DrawingServices.cs
- HttpTransportManager.cs
- FilteredReadOnlyMetadataCollection.cs
- ProfileService.cs
- CrossSiteScriptingValidation.cs
- ResolvedKeyFrameEntry.cs
- PropertyTab.cs
- AttributeAction.cs
- RequiredArgumentAttribute.cs
- TextOnlyOutput.cs
- Event.cs
- Util.cs
- ObjectQueryExecutionPlan.cs
- StringPropertyBuilder.cs
- DataListItem.cs
- UnsafeNativeMethodsPenimc.cs
- StreamMarshaler.cs
- SqlConnectionManager.cs
- DateTime.cs
- Bold.cs
- Size.cs
- RijndaelManagedTransform.cs
- CompositeFontParser.cs
- DomNameTable.cs
- Rect.cs
- DbConnectionPoolGroup.cs
- LinqDataSourceDisposeEventArgs.cs
- HtmlTableCellCollection.cs
- Listener.cs
- ProfileManager.cs
- DataGridViewHeaderCell.cs
- CustomErrorCollection.cs
- TypeConverter.cs
- Vector3DKeyFrameCollection.cs
- SystemKeyConverter.cs
- FontFamilyIdentifier.cs
- IsolationInterop.cs
- ToolStripRenderEventArgs.cs
- SharedPersonalizationStateInfo.cs
- CompModSwitches.cs
- ConvertersCollection.cs
- ServiceActivationException.cs
- ExpressionBuilderContext.cs
- TextBoxView.cs
- WebFormDesignerActionService.cs
- StrongNameUtility.cs
- Span.cs
- MediaContextNotificationWindow.cs
- PositiveTimeSpanValidatorAttribute.cs
- _ConnectionGroup.cs
- ipaddressinformationcollection.cs
- SmiContext.cs
- TypeDefinition.cs
- assertwrapper.cs
- PerformanceCountersElement.cs
- HwndTarget.cs
- DispatchWrapper.cs