在一个根据特定条件动态生成代码的模板中,一些代码使用的类型需要额外的using语句才能正确编译。如果生成了特定的代码,我如何引用/使用这样的类型,以便在生成的输出中包括使用?
例如,给定此代码,我如何确保添加正确的用法?
if (attribute.IsEnum()) {
// Resolve the EnumToStringConverter type?
statements.Add($".HasConversion(new EnumToStringConverter<{attribute.Type.Element.Name}>());");
}
实现这一点的一种方法是使用CSharpTemplateBase
基类上可用的UseType(...)
方法(在Intent.Modules.Common.CSharp.3.0.10
nuget包中可用(。
例如,你可以尝试这样的东西:
if (attribute.IsEnum()) {
// Resolve the EnumToStringConverter type?
statements.Add($".HasConversion(new {UseType("EnumToStringConverter", "<your-required-namespace>"}<{attribute.Type.Element.Name}>());");
}
还有另一个重载,它将采用完全限定的名称。例如:UseType("Microsoft.EntityFrameworkCore.Storage.ValueConversion.EnumToStringConverter")
(假设您使用的是EF Core的EnumToStringConverter
(