在T4模板文件中,我编写了一些代码,用于根据传递的CodeTypeRef类型生成类。生成的类将具有传递类型的所有属性,但具有细微差别:所有属性都应该是可空的。例如,假设我传递了以下类型:
public class MyClass
{
int x {get;set;}
string y {get;set;}
Guid z {get;set;}
byte[] m{get;set;}
float? n{get;set;}
}
现在生成的类将是这样的:
public class MyClass
{
int? x {get;set;}
string y {get;set;}
Guid? z {get;set;}
byte[] m{get;set;}
float? n{get;set;}
}
如您所见, int x 和 Guid z 属性已更改为可空类型。 我在T4中所拥有的是:
<# foreach(var prop in modelType.VisibleMembers().OfType<CodeProperty>()) { #>
public <#= prop.Type.AsString #> <#= prop.Name #>{ get; set; }
<# } #>
如果 prop.Type 可以为空,我不知道如何获取。 注意:使用 prop.Type.TypeKind 会很有帮助,但不是所有类型。