在一个 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很有帮助,但并非适用于所有类型。