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
- ColumnTypeConverter.cs
- ObjectView.cs
- FontSource.cs
- Parameter.cs
- MenuItem.cs
- HtmlInputFile.cs
- _TransmitFileOverlappedAsyncResult.cs
- CacheEntry.cs
- PropertyPathWorker.cs
- LicenseManager.cs
- ColorConverter.cs
- State.cs
- CallbackCorrelationInitializer.cs
- ZipIOLocalFileHeader.cs
- ToolStripButton.cs
- IconConverter.cs
- DiscriminatorMap.cs
- OptionalRstParameters.cs
- RegisteredScript.cs
- ProcessHostFactoryHelper.cs
- ConvertEvent.cs
- ZoneLinkButton.cs
- ExpressionContext.cs
- AssemblyBuilderData.cs
- PropagatorResult.cs
- ConfigXmlCDataSection.cs
- TextBoxView.cs
- HashCryptoHandle.cs
- QilList.cs
- ToolStripHighContrastRenderer.cs
- Range.cs
- TextContainerChangedEventArgs.cs
- ProtocolsConfigurationHandler.cs
- DeviceContexts.cs
- ProxyAttribute.cs
- cookieexception.cs
- TextDecoration.cs
- XamlStyleSerializer.cs
- SatelliteContractVersionAttribute.cs
- HtmlInputImage.cs
- ReachFixedPageSerializerAsync.cs
- TypedTableBaseExtensions.cs
- MDIClient.cs
- DataGridViewColumnDividerDoubleClickEventArgs.cs
- MetadataFile.cs
- DesignerActionHeaderItem.cs
- _DigestClient.cs
- DeliveryStrategy.cs
- ModelPropertyCollectionImpl.cs
- SrgsElementFactoryCompiler.cs
- TextBox.cs
- DataRowExtensions.cs
- PropertyChangedEventArgs.cs
- DataRelation.cs
- GraphicsPath.cs
- SQLBinaryStorage.cs
- SchemaNames.cs
- CompilerHelpers.cs
- BitmapEffectCollection.cs
- ParameterBinding.cs
- KnownBoxes.cs
- Variant.cs
- CallbackHandler.cs
- HtmlLabelAdapter.cs
- SelectionRangeConverter.cs
- LongAverageAggregationOperator.cs
- DefaultAuthorizationContext.cs
- TabPageDesigner.cs
- CodeNamespaceImport.cs
- DbInsertCommandTree.cs
- ImportedNamespaceContextItem.cs
- PropertyInformationCollection.cs
- FastPropertyAccessor.cs
- SQLGuidStorage.cs
- SiteMapNode.cs
- IconConverter.cs
- WebPartConnectionsCancelVerb.cs
- CharAnimationBase.cs
- DefinitionUpdate.cs
- XamlTreeBuilder.cs
- Section.cs
- TextCompositionManager.cs
- ItemsControlAutomationPeer.cs
- ContainerVisual.cs
- SecurityManager.cs
- log.cs
- ConfigXmlWhitespace.cs
- ConstraintCollection.cs
- RuntimeHelpers.cs
- DocumentXPathNavigator.cs
- ApplicationBuildProvider.cs
- WebBrowserDocumentCompletedEventHandler.cs
- UnitySerializationHolder.cs
- HttpRawResponse.cs
- LambdaCompiler.cs
- PageFunction.cs
- DecimalConstantAttribute.cs
- WSDualHttpBindingCollectionElement.cs
- VirtualPathProvider.cs
- TCEAdapterGenerator.cs