2

T4 テンプレート ファイルで、渡された CodeTypeRef 型に基づいてクラスを生成するコードをいくつか書きました。生成されたクラスには、渡された型のすべてのプロパティが含まれますが、わずかな違いがあります。すべてのプロパティは null 可能である必要があります。たとえば、次のタイプを渡したとします。

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プロパティだけが null 許容型に変更されました。私が T4 に持っているものは次のとおりです。

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

prop.Typeが null 可能かどうかを取得する方法がわかりません。注 : prop.Type.TypeKind の使用は役に立ちますが、すべての型で有効というわけではありません。

4

0 に答える 0