Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / CompMod / System / ComponentModel / Design / Serialization / EventMemberCodeDomSerializer.cs / 1 / EventMemberCodeDomSerializer.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.ComponentModel.Design.Serialization { using System; using System.CodeDom; using System.ComponentModel.Design; using System.Design; using System.Diagnostics; using System.Reflection; ////// A MemberCodeDomSerializer for events. /// internal sealed class EventMemberCodeDomSerializer : MemberCodeDomSerializer { private static CodeThisReferenceExpression _thisRef = new CodeThisReferenceExpression(); private static EventMemberCodeDomSerializer _default; internal static EventMemberCodeDomSerializer Default { get { if (_default == null) _default = new EventMemberCodeDomSerializer(); return _default; } } ////// This method actually performs the serialization. When the member is serialized /// the necessary statements will be added to the statements collection. /// [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Security", "CA2102:CatchNonClsCompliantExceptionsInGeneralHandlers")] public override void Serialize(IDesignerSerializationManager manager, object value, MemberDescriptor descriptor, CodeStatementCollection statements) { EventDescriptor eventToSerialize = descriptor as EventDescriptor; if (manager == null) throw new ArgumentNullException("manager"); if (value == null) throw new ArgumentNullException("value"); if (eventToSerialize == null) throw new ArgumentNullException("descriptor"); if (statements == null) throw new ArgumentNullException("statements"); try { IEventBindingService eventBindings = (IEventBindingService)manager.GetService(typeof(IEventBindingService)); // VSWhidbey 204574: If the IEventBindingService is not available, we don't throw - we just don't do // anything. if (eventBindings != null) { PropertyDescriptor prop = eventBindings.GetEventProperty(eventToSerialize); string methodName = (string)prop.GetValue(value); if (methodName != null) { CodeDomSerializer.Trace("Event {0} bound to {1}", eventToSerialize.Name, methodName); CodeExpression eventTarget = SerializeToExpression(manager, value); CodeDomSerializer.TraceWarningIf(eventTarget == null, "Object has no name and no propery ref in context so we cannot serialize events: {0}", value); if (eventTarget != null) { CodeTypeReference delegateTypeRef = new CodeTypeReference(eventToSerialize.EventType); CodeDelegateCreateExpression delegateCreate = new CodeDelegateCreateExpression(delegateTypeRef, _thisRef, methodName); CodeEventReferenceExpression eventRef = new CodeEventReferenceExpression(eventTarget, eventToSerialize.Name); CodeAttachEventStatement attach = new CodeAttachEventStatement(eventRef, delegateCreate); attach.UserData[typeof(Delegate)] = eventToSerialize.EventType; statements.Add(attach); } } } } catch (Exception e) { // Since we usually go through reflection, don't // show what our engine does, show what caused // the problem. // if (e is TargetInvocationException) { e = e.InnerException; } manager.ReportError(SR.GetString(SR.SerializerPropertyGenFailed, eventToSerialize.Name, e.Message)); } } ////// This method returns true if the given member descriptor should be serialized, /// or false if there is no need to serialize the member. /// public override bool ShouldSerialize(IDesignerSerializationManager manager, object value, MemberDescriptor descriptor) { return true; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TemplateControl.cs
- MenuItemBinding.cs
- RtfControls.cs
- EndpointInstanceProvider.cs
- RemoteWebConfigurationHostStream.cs
- MediaElement.cs
- CodeAccessPermission.cs
- ObjectSpanRewriter.cs
- SimpleHandlerFactory.cs
- LeaseManager.cs
- WindowsListViewGroup.cs
- AuthorizationRuleCollection.cs
- StyleCollectionEditor.cs
- complextypematerializer.cs
- OptionalRstParameters.cs
- CodeDirectionExpression.cs
- AxisAngleRotation3D.cs
- WebControl.cs
- DragSelectionMessageFilter.cs
- EntityDataSourceContainerNameItem.cs
- BrushConverter.cs
- BinaryObjectWriter.cs
- LineServicesCallbacks.cs
- ToolboxService.cs
- HitTestDrawingContextWalker.cs
- DetailsViewPageEventArgs.cs
- XmlEntity.cs
- BufferedStream.cs
- DocumentXPathNavigator.cs
- XmlSchemaElement.cs
- HtmlElement.cs
- PrintingPermissionAttribute.cs
- HttpContextServiceHost.cs
- SessionStateSection.cs
- SessionStateContainer.cs
- HMACSHA256.cs
- SecurityException.cs
- CacheForPrimitiveTypes.cs
- ReadOnlyDictionary.cs
- DbConnectionPoolCounters.cs
- InputElement.cs
- ConnectionProviderAttribute.cs
- RubberbandSelector.cs
- MailMessage.cs
- PipeConnection.cs
- MiniConstructorInfo.cs
- util.cs
- SafeWaitHandle.cs
- ByeMessageApril2005.cs
- EntityDesignerBuildProvider.cs
- ArgumentValueSerializer.cs
- DbException.cs
- Graph.cs
- CompositeCollectionView.cs
- TemplateControl.cs
- AddingNewEventArgs.cs
- LayoutTableCell.cs
- ListViewDeleteEventArgs.cs
- ImageMetadata.cs
- ContextStack.cs
- PageAsyncTaskManager.cs
- DataGridViewCheckBoxCell.cs
- SqlPersonalizationProvider.cs
- ComboBoxAutomationPeer.cs
- CatchBlock.cs
- dtdvalidator.cs
- SwitchExpression.cs
- ConstraintStruct.cs
- ComponentFactoryHelpers.cs
- XmlSchemaParticle.cs
- CheckStoreFileValidityRequest.cs
- MailMessageEventArgs.cs
- BitmapCodecInfo.cs
- ProxyWebPart.cs
- UriParserTemplates.cs
- BaseDataList.cs
- TextServicesCompartmentContext.cs
- XmlBinaryReader.cs
- TimeSpan.cs
- SqlLiftIndependentRowExpressions.cs
- FrameworkObject.cs
- LinkUtilities.cs
- EntityContainerRelationshipSet.cs
- SignerInfo.cs
- glyphs.cs
- TransformValueSerializer.cs
- CompiledIdentityConstraint.cs
- WindowExtensionMethods.cs
- GeometryGroup.cs
- SHA1Managed.cs
- ColorTranslator.cs
- DataGridViewMethods.cs
- CertificateManager.cs
- TdsParserSessionPool.cs
- AttachedPropertyMethodSelector.cs
- HttpException.cs
- ConfigurationSectionGroupCollection.cs
- DBDataPermissionAttribute.cs
- DispatcherTimer.cs
- Vars.cs