JScriptに対するCodeDom
昨日のEntityBuilderですが、JScriptはGenerics対応していないので、そのままだとコンパイルできないコードを吐き出します。ということで、
unit.Namespaces[0].Imports.Add(new CodeNamespaceImport("System")); foreach (CodeNamespace ns in unit.Namespaces) foreach (CodeTypeDeclaration t in ns.Types) foreach (CodeTypeMember m in t.Members) if (m is CodeMemberField) { // フィールドの型がジェネリックの場合、System.Objectにする CodeMemberField mf = m as CodeMemberField; if (mf.Type.TypeArguments.Count > 0) mf.Type = new CodeTypeReference(typeof(object)); } else if (m is CodeMemberProperty) { // プロパティの型がジェネリックの場合、System.Objectにする CodeMemberProperty mp = m as CodeMemberProperty; if (mp.Type.TypeArguments.Count > 0) mp.Type = new CodeTypeReference(typeof(object)); } new JScriptCodeProvider().GenerateCodeFromCompileUnit(unit, stringwriter, null);
今回はフィールドとプロパティで決めうちできるので、手抜き対応。(^^;