c# - tributarias - ¿Hay una manera de que CodeDom ponga usando declaraciones antes del espacio de nombres
estatuto tributario nacional art 644 (2)
Así que el código sería el mismo que antes pero con este bit agregado.
CodeNamespace globalNamespace = new CodeNamespace();
globalNamespace.Imports.Add(new CodeNamespaceImport("Foo"));
// globalNamespace.Comments = string.Empty; you cannot do this
ccu.Namespaces.Add(globalNamespace);
ccu.Namespaces.Add(ns);
La documentación de msdn dice que las importaciones de agregar espacios de nombres a la colección CodeNamespace.Imports. Esto los coloca dentro del espacio de nombres (lo cual tiene sentido, ya que los agrega al espacio de nombres)
namespace Foo
{
using Bar;
//Code
}
Sin embargo, el resto de nuestra base de código tiene declaraciones de uso fuera del espacio de nombres:
using Bar;
namespace Foo
{
//Code
}
¿Hay una manera limpia de que CodeDom emita la segunda versión?
Editar: el código para producir el primer ejemplo es algo así:
CodeNamespace ns = new CodeNamespace("Foo");
ns.Imports.Add(new CodenamespaceImport("Bar"));
CodeCompileUnit cu = new CodeCompileUnit();
cu.Namespaces.Add(ns);
new CSharpCodeProvider().GenerateCodeFromCompileUnit(cu, Console.Out, null);
La forma más sencilla es agregar una entrada de espacio de nombres global en la Unidad de compilación (espacio de nombres sin nombre) y agregarle las importaciones.