2

在一个 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 xGuid z属性更改为可空类型。我在 T4 中拥有的是:

  <# foreach(var prop in modelType.VisibleMembers().OfType<CodeProperty>()) { #>
  public  <#= prop.Type.AsString  #>  <#= prop.Name #>{ get; set; } 
  <# } #> 

我不知道如何获取prop.Type是否可以为空。注意:使用prop.Type.TypeKind很有帮助,但并非适用于所有类型。

4

0 回答 0