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
- JulianCalendar.cs
- pingexception.cs
- GridLength.cs
- DependencyPropertyKind.cs
- Mapping.cs
- MiniCustomAttributeInfo.cs
- ConfigXmlAttribute.cs
- MonthChangedEventArgs.cs
- XmlDigitalSignatureProcessor.cs
- Constant.cs
- BamlLocalizerErrorNotifyEventArgs.cs
- InputProviderSite.cs
- AnimationStorage.cs
- NetworkAddressChange.cs
- BitStream.cs
- DragSelectionMessageFilter.cs
- StaticFileHandler.cs
- ScrollChangedEventArgs.cs
- ObjectNotFoundException.cs
- CrossAppDomainChannel.cs
- ListViewCommandEventArgs.cs
- ColorAnimation.cs
- InternalConfigSettingsFactory.cs
- ByteStreamGeometryContext.cs
- SignatureToken.cs
- DynamicValidatorEventArgs.cs
- ITreeGenerator.cs
- OutputCacheProfileCollection.cs
- PlatformCulture.cs
- HttpCookie.cs
- PeerInvitationResponse.cs
- ServiceBuildProvider.cs
- OptimizedTemplateContent.cs
- EtwTrace.cs
- WindowsGrip.cs
- DragDropHelper.cs
- WindowsScrollBarBits.cs
- UIInitializationException.cs
- DriveInfo.cs
- GraphicsPathIterator.cs
- InfoCardKeyedHashAlgorithm.cs
- TransformCollection.cs
- StringSorter.cs
- TagMapInfo.cs
- DocumentSchemaValidator.cs
- Content.cs
- IndexedGlyphRun.cs
- MultipartContentParser.cs
- SystemIcmpV4Statistics.cs
- CompiledXpathExpr.cs
- PropertyGroupDescription.cs
- UnknownBitmapDecoder.cs
- UnmanagedBitmapWrapper.cs
- Filter.cs
- Effect.cs
- SchemaInfo.cs
- ResourceExpression.cs
- OperationContractGenerationContext.cs
- TriggerBase.cs
- DataGridCommandEventArgs.cs
- UnsafeNativeMethods.cs
- XPathParser.cs
- AspNetHostingPermission.cs
- HttpListenerPrefixCollection.cs
- OpacityConverter.cs
- BoundPropertyEntry.cs
- OdbcEnvironmentHandle.cs
- ImmutableClientRuntime.cs
- FilterElement.cs
- Int32RectConverter.cs
- RemotingAttributes.cs
- wgx_exports.cs
- GifBitmapDecoder.cs
- KeyManager.cs
- ReadWriteObjectLock.cs
- ParameterCollection.cs
- NotifyParentPropertyAttribute.cs
- NumericPagerField.cs
- SafeReadContext.cs
- BridgeDataReader.cs
- SchemaCollectionPreprocessor.cs
- BeginStoryboard.cs
- Guid.cs
- Tablet.cs
- ProgressChangedEventArgs.cs
- GridPattern.cs
- IsolatedStorageFilePermission.cs
- FixUpCollection.cs
- SystemMulticastIPAddressInformation.cs
- HttpConfigurationContext.cs
- Control.cs
- Rect3D.cs
- ToolStripDropDownClosedEventArgs.cs
- FormsAuthentication.cs
- CryptoKeySecurity.cs
- FileBasedResourceGroveler.cs
- CodeMemberField.cs
- InternalException.cs
- UrlMappingsModule.cs
- DescendantQuery.cs