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
- VirtualDirectoryMapping.cs
- CollectionView.cs
- CustomTokenProvider.cs
- PreparingEnlistment.cs
- FocusTracker.cs
- TextParaLineResult.cs
- CryptoApi.cs
- ComplexType.cs
- PrimitiveCodeDomSerializer.cs
- ContentType.cs
- PreviewPageInfo.cs
- SemaphoreFullException.cs
- ComponentEditorForm.cs
- XmlComment.cs
- SelectionUIHandler.cs
- ScriptReference.cs
- BamlTreeUpdater.cs
- MouseGesture.cs
- SpellerHighlightLayer.cs
- IUnknownConstantAttribute.cs
- DrawingGroup.cs
- OleDbRowUpdatingEvent.cs
- MethodAccessException.cs
- SessionStateModule.cs
- DBCommand.cs
- WindowsProgressbar.cs
- DataGridViewCellParsingEventArgs.cs
- ColumnMap.cs
- SrgsText.cs
- Lasso.cs
- XmlBinaryWriter.cs
- _RequestCacheProtocol.cs
- WebPartCancelEventArgs.cs
- Rotation3D.cs
- CodeDirectoryCompiler.cs
- LoginView.cs
- ComponentDispatcher.cs
- InputScopeNameConverter.cs
- WindowsGraphicsWrapper.cs
- SqlDependencyListener.cs
- VirtualizedCellInfoCollection.cs
- DataGridTextBox.cs
- ManifestResourceInfo.cs
- AsyncResult.cs
- XmlSchemaElement.cs
- ConnectionProviderAttribute.cs
- DockProviderWrapper.cs
- InputLanguageSource.cs
- CatalogPart.cs
- DynamicDataManager.cs
- WebServiceEnumData.cs
- WindowsFormsHostPropertyMap.cs
- CopyNodeSetAction.cs
- DateTimeConverter.cs
- DetailsViewModeEventArgs.cs
- XNameConverter.cs
- ListViewGroup.cs
- StatusBarItem.cs
- XNameConverter.cs
- XmlDataProvider.cs
- ParamArrayAttribute.cs
- TreeNodeBinding.cs
- ImageList.cs
- ProviderIncompatibleException.cs
- RelationshipWrapper.cs
- DataListItemEventArgs.cs
- TrackBarRenderer.cs
- FolderBrowserDialog.cs
- ActiveXHelper.cs
- DbDataRecord.cs
- SamlAuthorizationDecisionClaimResource.cs
- DataKeyCollection.cs
- AdCreatedEventArgs.cs
- OdbcConnectionFactory.cs
- ServiceModelEnumValidator.cs
- ClientTarget.cs
- PersonalizationStateInfoCollection.cs
- ClientSettingsProvider.cs
- DataContractSerializerElement.cs
- StaticExtensionConverter.cs
- MulticastDelegate.cs
- RawStylusSystemGestureInputReport.cs
- ConditionalWeakTable.cs
- MultiPropertyDescriptorGridEntry.cs
- DesignerVerb.cs
- OrderedDictionary.cs
- LinkTarget.cs
- InkCanvas.cs
- ObjectResult.cs
- StrongTypingException.cs
- assertwrapper.cs
- FixedSOMTable.cs
- ToolStripRenderEventArgs.cs
- ArrayElementGridEntry.cs
- DashStyles.cs
- XmlStrings.cs
- DataGridViewRowCollection.cs
- EventProvider.cs
- XmlSchemaSimpleTypeRestriction.cs
- TextCollapsingProperties.cs