Code:
/ FX-1434 / FX-1434 / 1.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
- StateWorkerRequest.cs
- Metafile.cs
- BuildProviderAppliesToAttribute.cs
- MonthCalendar.cs
- LinkLabelLinkClickedEvent.cs
- DesignerView.cs
- exports.cs
- FileVersionInfo.cs
- RequiredArgumentAttribute.cs
- SiteMap.cs
- DefaultParameterValueAttribute.cs
- PropertyGridView.cs
- ResourcesBuildProvider.cs
- Logging.cs
- Pair.cs
- ParsedAttributeCollection.cs
- Object.cs
- GorillaCodec.cs
- Int32KeyFrameCollection.cs
- XmlIlVisitor.cs
- TableCellCollection.cs
- DbParameterHelper.cs
- PKCS1MaskGenerationMethod.cs
- RequestQueue.cs
- PrintDialogException.cs
- CodeDomSerializer.cs
- HtmlToClrEventProxy.cs
- CompiledRegexRunnerFactory.cs
- dtdvalidator.cs
- TempFiles.cs
- ConstNode.cs
- StorageMappingItemLoader.cs
- OleStrCAMarshaler.cs
- DefaultWorkflowLoaderService.cs
- SegmentInfo.cs
- DataTransferEventArgs.cs
- EventEntry.cs
- StreamReader.cs
- ContentPosition.cs
- PipelineModuleStepContainer.cs
- SqlConnectionHelper.cs
- ZipArchive.cs
- LineVisual.cs
- OdbcParameter.cs
- MetadataItemEmitter.cs
- ThicknessAnimationUsingKeyFrames.cs
- SoapEnumAttribute.cs
- SrgsRulesCollection.cs
- InputReport.cs
- Int32EqualityComparer.cs
- CallbackException.cs
- UriParserTemplates.cs
- ActivityExecutorSurrogate.cs
- FixedSOMGroup.cs
- TextEditorSpelling.cs
- DataConnectionHelper.cs
- DataGridViewCheckBoxColumn.cs
- BufferedGraphics.cs
- ImageField.cs
- GraphicsPath.cs
- MultitargetUtil.cs
- ImageUrlEditor.cs
- SearchForVirtualItemEventArgs.cs
- QilChoice.cs
- WebPartMinimizeVerb.cs
- CallbackHandler.cs
- WriteableBitmap.cs
- __Filters.cs
- UIElementAutomationPeer.cs
- SafeSecurityHandles.cs
- TrackingMemoryStream.cs
- DbFunctionCommandTree.cs
- ProxyWebPartManager.cs
- BindingWorker.cs
- FileDialog_Vista.cs
- AnnotationComponentManager.cs
- TdsParserSessionPool.cs
- SettingsSavedEventArgs.cs
- XmlMemberMapping.cs
- PngBitmapDecoder.cs
- HScrollBar.cs
- WebPart.cs
- ConfigXmlComment.cs
- WsatExtendedInformation.cs
- CompressedStack.cs
- Model3D.cs
- SchemaExporter.cs
- CellQuery.cs
- TextRangeSerialization.cs
- M3DUtil.cs
- MimeTypeMapper.cs
- FixedSOMGroup.cs
- EqualityComparer.cs
- ServiceProviders.cs
- OperationCanceledException.cs
- ContentPlaceHolderDesigner.cs
- BitmapEffectGroup.cs
- BitmapEffectCollection.cs
- ErrorTableItemStyle.cs
- DataBindEngine.cs