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 の使用は役に立ちますが、すべての型で有効というわけではありません。