Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Wmi / managed / System / Management / Instrumentation / CodeSpit.cs / 1305376 / CodeSpit.cs
namespace System.Management.Instrumentation { using System; using System.IO; using System.Collections; using System.Collections.Specialized; using System.Globalization; using System.Runtime.Versioning; class CodeWriter { int depth; ArrayList children = new ArrayList(); public static explicit operator String(CodeWriter writer) { return writer.ToString(); } public override string ToString() { StringWriter writer = new StringWriter(CultureInfo.InvariantCulture); WriteCode(writer); string retString = writer.ToString(); writer.Close(); return retString; } void WriteCode(TextWriter writer) { string prefix = new String(' ', depth*4); foreach(Object child in children) { if(null == child) { writer.WriteLine(); } else if(child is string) { writer.Write(prefix); writer.WriteLine(child); } else ((CodeWriter)child).WriteCode(writer); } } public CodeWriter AddChild(string name) { Line(name); Line("{"); CodeWriter child = new CodeWriter(); child.depth = depth+1; children.Add(child); Line("}"); return child; } public CodeWriter AddChild(params string[] parts) { return AddChild(String.Concat(parts)); } public CodeWriter AddChildNoIndent(string name) { Line(name); CodeWriter child = new CodeWriter(); child.depth = depth+1; children.Add(child); return child; } public CodeWriter AddChild(CodeWriter snippet) { snippet.depth = depth; children.Add(snippet); return snippet; } public void Line(string line) { children.Add(line); } public void Line(params string[] parts) { Line(String.Concat(parts)); } public void Line() { children.Add(null); } } class ReferencesCollection { StringCollection namespaces = new StringCollection(); public StringCollection Namespaces { get { return namespaces; } } StringCollection assemblies = new StringCollection(); public StringCollection Assemblies { get { return assemblies; } } CodeWriter usingCode = new CodeWriter(); public CodeWriter UsingCode { get {return usingCode; } } [ResourceExposure(ResourceScope.None),ResourceConsumption(ResourceScope.Machine,ResourceScope.Machine)] public void Add(Type type) { if(!namespaces.Contains(type.Namespace)) { namespaces.Add(type.Namespace); usingCode.Line(String.Format("using {0};", type.Namespace)); } if(!assemblies.Contains(type.Assembly.Location)) assemblies.Add(type.Assembly.Location); } } } // 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
- InertiaExpansionBehavior.cs
- InvalidOleVariantTypeException.cs
- PageStatePersister.cs
- HostingEnvironmentException.cs
- RelatedView.cs
- HandleCollector.cs
- TextDocumentView.cs
- FormViewCommandEventArgs.cs
- Composition.cs
- ImageConverter.cs
- Quad.cs
- unitconverter.cs
- MultiByteCodec.cs
- DefaultSerializationProviderAttribute.cs
- QuadraticBezierSegment.cs
- RawAppCommandInputReport.cs
- TypeConverterAttribute.cs
- FunctionDefinition.cs
- Style.cs
- ApplySecurityAndSendAsyncResult.cs
- FrameworkTemplate.cs
- FixedSOMTextRun.cs
- FormViewUpdatedEventArgs.cs
- OverflowException.cs
- SqlDataSourceConfigureSortForm.cs
- OutputCacheSettings.cs
- SafeArrayTypeMismatchException.cs
- X500Name.cs
- ListItem.cs
- PictureBox.cs
- PcmConverter.cs
- BaseDataBoundControl.cs
- CompiledAction.cs
- HttpResponseHeader.cs
- SchemaTypeEmitter.cs
- NativeWindow.cs
- DESCryptoServiceProvider.cs
- RestHandlerFactory.cs
- XmlSiteMapProvider.cs
- DataConnectionHelper.cs
- XmlParserContext.cs
- DataObjectFieldAttribute.cs
- NullReferenceException.cs
- DbModificationCommandTree.cs
- EventLogConfiguration.cs
- PixelShader.cs
- Point.cs
- DLinqDataModelProvider.cs
- NavigatingCancelEventArgs.cs
- XsdValidatingReader.cs
- StdRegProviderWrapper.cs
- ComponentCollection.cs
- WebResponse.cs
- MenuEventArgs.cs
- RemoteArgument.cs
- XmlTextEncoder.cs
- TextEditorSelection.cs
- EdmItemCollection.cs
- ellipse.cs
- EventLogConfiguration.cs
- AsmxEndpointPickerExtension.cs
- MessageQueueTransaction.cs
- SubqueryRules.cs
- JsonObjectDataContract.cs
- CharacterShapingProperties.cs
- MeasureItemEvent.cs
- MsmqInputMessage.cs
- Baml6ConstructorInfo.cs
- SoapInteropTypes.cs
- DoubleCollection.cs
- TextRunCacheImp.cs
- UnaryQueryOperator.cs
- UriSectionData.cs
- Header.cs
- FtpCachePolicyElement.cs
- Simplifier.cs
- SmiTypedGetterSetter.cs
- Listbox.cs
- WebPartExportVerb.cs
- AttributeEmitter.cs
- FrugalMap.cs
- CompilerError.cs
- StateMachineExecutionState.cs
- CodeNamespaceCollection.cs
- Stackframe.cs
- GridLength.cs
- RecognitionEventArgs.cs
- PropertySourceInfo.cs
- DataObjectCopyingEventArgs.cs
- DrawTreeNodeEventArgs.cs
- HelpHtmlBuilder.cs
- ProcessModuleCollection.cs
- __ComObject.cs
- ContentPosition.cs
- ProgressPage.cs
- XamlStyleSerializer.cs
- Trustee.cs
- NamedPipeConnectionPoolSettings.cs
- TreeView.cs
- UIElement3D.cs