Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Services / Monitoring / system / Diagnosticts / Design / StringDictionaryCodeDomSerializer.cs / 1 / StringDictionaryCodeDomSerializer.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.Diagnostics.Design { using System; using System.Design; using System.CodeDom; using System.Collections; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System.Reflection; using System.ComponentModel.Design.Serialization; using System.Collections.Specialized; ////// /// This serializer serializes string dictionaries. /// internal class StringDictionaryCodeDomSerializer : CodeDomSerializer { ////// /// This method takes a CodeDomObject and deserializes into a real object. /// We don't do anything here. /// public override object Deserialize(IDesignerSerializationManager manager, object codeObject) { Debug.Fail("Don't expect this to be called."); return null; } ////// /// Serializes the given object into a CodeDom object. /// public override object Serialize(IDesignerSerializationManager manager, object value) { object result = null; StringDictionary dictionary = value as StringDictionary; if (dictionary != null) { object context = manager.Context.Current; ExpressionContext exp = context as ExpressionContext; if (exp != null) { if (exp.Owner == value) { context = exp.Expression; } } // we can only serialize if we have a CodePropertyReferenceExpression CodePropertyReferenceExpression propRef = context as CodePropertyReferenceExpression; if (propRef != null) { // get the object with the property we're setting object targetObject = DeserializeExpression(manager, null, propRef.TargetObject); if (targetObject != null) { // get the PropertyDescriptor of the property we're setting PropertyDescriptor prop = TypeDescriptor.GetProperties(targetObject)[propRef.PropertyName]; if (prop != null) { // okay, we have the property and we have the StringDictionary, now we generate // a line like this (c# example): // myObject.strDictProp["key"] = "value"; // for each key/value pair in the StringDictionary CodeStatementCollection statements = new CodeStatementCollection(); CodeMethodReferenceExpression methodRef = new CodeMethodReferenceExpression(propRef, "Add"); foreach (DictionaryEntry entry in dictionary) { // serialize the key (in most languages this will look like "key") CodeExpression serializedKey = SerializeToExpression(manager, entry.Key); // serialize the value (in most languages this will look like "value") CodeExpression serializedValue = SerializeToExpression(manager, entry.Value); // serialize the method call (prop.Add("key", "value")) if (serializedKey != null && serializedValue != null) { CodeMethodInvokeExpression statement = new CodeMethodInvokeExpression(); statement.Method = methodRef; statement.Parameters.Add(serializedKey); statement.Parameters.Add(serializedValue); statements.Add(statement); } } result = statements; } } } } else { // 'value' is not a StringDictionary. What should we do? } return result; } } } // 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
- Transform3DGroup.cs
- ContextMarshalException.cs
- EtwProvider.cs
- TimeoutValidationAttribute.cs
- MultiTrigger.cs
- StorageComplexTypeMapping.cs
- Sentence.cs
- PageHandlerFactory.cs
- UICuesEvent.cs
- UnsafeNativeMethods.cs
- ListBindableAttribute.cs
- SqlUserDefinedTypeAttribute.cs
- SelectionItemProviderWrapper.cs
- CachedPathData.cs
- BitmapScalingModeValidation.cs
- XmlValidatingReaderImpl.cs
- ValidatorCollection.cs
- VirtualPath.cs
- XmlDigitalSignatureProcessor.cs
- RuntimeConfig.cs
- DrawingVisual.cs
- DocumentDesigner.cs
- CodeTypeReferenceSerializer.cs
- DataGridViewToolTip.cs
- DbgUtil.cs
- LocationUpdates.cs
- FlowLayout.cs
- HMACSHA256.cs
- Matrix.cs
- WebPartMenu.cs
- SmtpSection.cs
- SecurityContext.cs
- EmptyEnumerator.cs
- FixedPageAutomationPeer.cs
- DESCryptoServiceProvider.cs
- ListenerElementsCollection.cs
- HtmlInputSubmit.cs
- Bold.cs
- SimpleTypeResolver.cs
- CoreSwitches.cs
- EdmProviderManifest.cs
- ServiceModelExtensionCollectionElement.cs
- InkCanvasFeedbackAdorner.cs
- BitConverter.cs
- GridViewHeaderRowPresenter.cs
- Context.cs
- Debug.cs
- SignatureToken.cs
- EntityConnection.cs
- EntityTransaction.cs
- SchemaAttDef.cs
- ItemCollection.cs
- XmlFormatExtensionPointAttribute.cs
- SchemaNotation.cs
- FormViewCommandEventArgs.cs
- ProxyAttribute.cs
- ObjectContext.cs
- AddIn.cs
- UpdateEventArgs.cs
- HebrewNumber.cs
- ButtonBaseDesigner.cs
- Pipe.cs
- Funcletizer.cs
- AssemblyInfo.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- XmlSignificantWhitespace.cs
- XmlNodeWriter.cs
- HttpClientChannel.cs
- Adorner.cs
- ApplicationContext.cs
- AuthenticationModulesSection.cs
- GenericUriParser.cs
- PipelineModuleStepContainer.cs
- WindowsAuthenticationEventArgs.cs
- Constants.cs
- DataService.cs
- ViewLoader.cs
- InputScopeAttribute.cs
- TextBoxAutoCompleteSourceConverter.cs
- NavigationCommands.cs
- MarkupExtensionParser.cs
- ContractAdapter.cs
- LineProperties.cs
- SQlBooleanStorage.cs
- MetadataItem.cs
- FileRecordSequenceHelper.cs
- ExtenderControl.cs
- ApplicationSecurityInfo.cs
- nulltextnavigator.cs
- IgnoreSectionHandler.cs
- Group.cs
- ResourceReferenceExpressionConverter.cs
- StrongNameUtility.cs
- TrustLevel.cs
- DiscreteKeyFrames.cs
- AdPostCacheSubstitution.cs
- SelectionHighlightInfo.cs
- TraceXPathNavigator.cs
- SiteMapPath.cs
- ObsoleteAttribute.cs