<#@ template debug="false" hostspecific="true" language="C#" #> <#@ include file="EF.Utility.CS.ttinclude"#> <#@ output extension=".cs" #> <#@ assembly name="System.Core" #> <#@ assembly name="System.Management" #> <#@ import namespace="System.IO" #> <#@ import namespace="System.Collections.Generic" #> <#@ import namespace="System.Management" #> using System; using System.Reflection; using System.Management; using System.Collections.Generic; <# CodeGenerationTools code = new CodeGenerationTools(this) { FullyQualifySystemTypes = true, CamelCaseFields = false }; var region = new CodeRegion(this); var namespaceName = code.VsNamespaceSuggestion(); var path = this.Host.ResolvePath(""); Directory.SetCurrentDirectory(path); var classes = new List(); if (!File.Exists("Classes.txt")) { // classes file not set return string.Empty; } // read the WMI-classes to generate using (var stream = File.OpenRead("Classes.txt")) { using (var reader = new StreamReader(stream)) { while (!reader.EndOfStream) { var tmp = reader.ReadLine(); if (!tmp.StartsWith("#")) classes.Add(tmp); } } } #> /* T4-WMI-Template * generated by codingfreaks * see http://www.codingfreaks.de/ */ namespace <#=namespaceName#> { <# region.Begin("wrappers"); WriteLine(""); foreach (var className in classes) { var classNameClear= className.Replace("_", ""); ClearIndent(); #> public class <#=classNameClear#> { <# PushIndent(CodeRegion.GetIndent(1)); var searcher = new ManagementObjectSearcher("SELECT * FROM " + className); var i = 0; var elements = searcher.Get(); if (elements.Count > 0) { foreach(var element in elements) { foreach(var pinfo in element.Properties) { WriteLine(""); var arrayString = ""; if (pinfo.IsArray) arrayString = "[]"; #> public <#=pinfo.Type.ToString()#><#=arrayString#> <#=pinfo.Name#> { get; set; } <# } break; } } #> } <# WriteLine(""); } region.End(2); ClearIndent(); #> /// /// /// public static class WmiHelper { <# foreach (var className in classes) { var classNameClear= className.Replace("_", ""); var searcher = new ManagementObjectSearcher("SELECT * FROM " + className); var i = 0; var elements = searcher.Get(); #> public static List<<#=classNameClear#>> <#=classNameClear#>s { get { var ret = new List<<#=classNameClear#>>(); var searcher = new ManagementObjectSearcher("SELECT * FROM <#=className#>"); foreach(var obj in searcher.Get()) { var itemToAdd = new <#=classNameClear#>(); foreach(var prop in obj.Properties) { SetPropertyToObject(prop.Name, itemToAdd, obj[prop.Name], prop.Type.ToString()); } ret.Add(itemToAdd); } return ret; <# foreach(var element in elements) { foreach(var pinfo in element.Properties) { } } #> } } <# } WriteLine(""); #> private static void SetPropertyToObject(string propertyName, object target, object value, string targetType) { Type typ = target.GetType(); var pinfo = typ.GetProperty(propertyName); if (pinfo != null) { try { pinfo.SetValue(target, value, null); } catch {} } } <# #> } }