Code:
/ FX-1434 / FX-1434 / 1.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
- MouseEventArgs.cs
- PriorityQueue.cs
- ColorBlend.cs
- EastAsianLunisolarCalendar.cs
- Globals.cs
- TickBar.cs
- Visual3DCollection.cs
- XmlSerializationGeneratedCode.cs
- DnsPermission.cs
- AuthenticationModuleElement.cs
- ThreadSafeList.cs
- AsyncCompletedEventArgs.cs
- GeneralTransform3DTo2DTo3D.cs
- SoapMessage.cs
- ContextMenu.cs
- MembershipValidatePasswordEventArgs.cs
- CopyNamespacesAction.cs
- SqlCommand.cs
- XamlVector3DCollectionSerializer.cs
- ListDataBindEventArgs.cs
- SessionState.cs
- DataContractJsonSerializerOperationBehavior.cs
- CodePropertyReferenceExpression.cs
- ElapsedEventArgs.cs
- EpmSyndicationContentSerializer.cs
- ObjectItemCachedAssemblyLoader.cs
- BitmapEffectDrawing.cs
- RoutedEvent.cs
- DisplayClaim.cs
- HttpModulesSection.cs
- BitStream.cs
- ConditionalWeakTable.cs
- IntSecurity.cs
- basecomparevalidator.cs
- PresentationTraceSources.cs
- OleDbEnumerator.cs
- SmtpNtlmAuthenticationModule.cs
- UpDownBase.cs
- CodeTypeConstructor.cs
- HandleRef.cs
- Int64KeyFrameCollection.cs
- HtmlEncodedRawTextWriter.cs
- TextInfo.cs
- SettingsPropertyValue.cs
- HostedHttpRequestAsyncResult.cs
- DayRenderEvent.cs
- ControlTemplate.cs
- KeyValuePair.cs
- ViewEventArgs.cs
- InvokePattern.cs
- IsolationInterop.cs
- AuthorizationRuleCollection.cs
- LayoutTableCell.cs
- XmlSchemaElement.cs
- WebPart.cs
- RoutedUICommand.cs
- XPathException.cs
- AtomParser.cs
- Group.cs
- XmlSerializerAssemblyAttribute.cs
- CloudCollection.cs
- DropSource.cs
- ToolStripControlHost.cs
- Classification.cs
- OutKeywords.cs
- HtmlImage.cs
- DomainConstraint.cs
- SafeHandle.cs
- XPathQilFactory.cs
- Int16Animation.cs
- XPathCompileException.cs
- IItemProperties.cs
- ValidationPropertyAttribute.cs
- XmlLoader.cs
- EdmProperty.cs
- TileBrush.cs
- BaseTransportHeaders.cs
- EntityException.cs
- HistoryEventArgs.cs
- CompilerWrapper.cs
- FontFamilyValueSerializer.cs
- NavigateEvent.cs
- SymmetricKeyWrap.cs
- TreeViewImageIndexConverter.cs
- IISMapPath.cs
- UnmanagedMemoryStreamWrapper.cs
- TextElementEnumerator.cs
- DesignerMetadata.cs
- ArrayEditor.cs
- HandlerFactoryWrapper.cs
- XsdValidatingReader.cs
- DataSourceExpression.cs
- WebPartEditVerb.cs
- CLSCompliantAttribute.cs
- XmlLanguageConverter.cs
- XmlObjectSerializerContext.cs
- ViewKeyConstraint.cs
- SmtpNetworkElement.cs
- ObjectTag.cs
- OleDbSchemaGuid.cs