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
- PasswordRecovery.cs
- DataServiceProviderMethods.cs
- SetIterators.cs
- XPathParser.cs
- SubstitutionList.cs
- SqlDataSourceQueryEditorForm.cs
- LogicalExpr.cs
- ScopeElementCollection.cs
- SocketElement.cs
- RTLAwareMessageBox.cs
- StringUtil.cs
- HashMembershipCondition.cs
- NameValueCollection.cs
- Screen.cs
- ListViewPagedDataSource.cs
- SqlLiftWhereClauses.cs
- CaseExpr.cs
- RoleBoolean.cs
- XmlValidatingReader.cs
- NavigationWindow.cs
- DbException.cs
- CodeDomDesignerLoader.cs
- MailBnfHelper.cs
- DictionaryKeyPropertyAttribute.cs
- WebPartConnectionsCancelVerb.cs
- mediaclock.cs
- FontUnitConverter.cs
- SvcMapFileLoader.cs
- MaskInputRejectedEventArgs.cs
- Overlapped.cs
- TextServicesPropertyRanges.cs
- Rules.cs
- Screen.cs
- ProxyHelper.cs
- HandledMouseEvent.cs
- NumericUpDownAccelerationCollection.cs
- SubMenuStyle.cs
- CustomCredentialPolicy.cs
- CertificateElement.cs
- WinEventWrap.cs
- HtmlInputSubmit.cs
- UniqueEventHelper.cs
- LicenseManager.cs
- COM2ComponentEditor.cs
- NgenServicingAttributes.cs
- HtmlInputCheckBox.cs
- DataGridViewRowPrePaintEventArgs.cs
- TemplateBaseAction.cs
- SessionParameter.cs
- XmlElementCollection.cs
- TextBoxView.cs
- ListBoxItem.cs
- CancellableEnumerable.cs
- BaseProcessor.cs
- NameService.cs
- InfoCardTrace.cs
- PermissionSet.cs
- OracleBoolean.cs
- ColumnTypeConverter.cs
- SchemaMerger.cs
- HiddenFieldPageStatePersister.cs
- IPHostEntry.cs
- ButtonBase.cs
- NextPreviousPagerField.cs
- _FixedSizeReader.cs
- CellNormalizer.cs
- SortQuery.cs
- DecimalConstantAttribute.cs
- Image.cs
- DataGridAutoFormatDialog.cs
- SelectorItemAutomationPeer.cs
- SoapAttributeAttribute.cs
- ConfigurationLocation.cs
- DataGridViewDataErrorEventArgs.cs
- TableLayoutStyle.cs
- ByteRangeDownloader.cs
- TemplatedWizardStep.cs
- ControlParameter.cs
- InputMethodStateTypeInfo.cs
- UnconditionalPolicy.cs
- Subtract.cs
- XmlSchemaComplexContentExtension.cs
- IRCollection.cs
- Win32PrintDialog.cs
- CodeTypeOfExpression.cs
- ThicknessKeyFrameCollection.cs
- ContentType.cs
- CodeValidator.cs
- StateMachineWorkflow.cs
- SafeSecurityHelper.cs
- Timeline.cs
- wmiprovider.cs
- RoleServiceManager.cs
- ReferentialConstraintRoleElement.cs
- FileDialogCustomPlacesCollection.cs
- OutputCache.cs
- LayoutEditorPart.cs
- ResXResourceSet.cs
- Canonicalizers.cs
- CopyAttributesAction.cs