Roslynを使用して、何らかの種類のデータアクセス層の言語に依存しないコードジェネレータを作成します。 メタデータを使用して目的のコードを出力します。 コードのC#およびVB.NETバージョンを返すことが期待されています。言語に依存しないコードを生成するときに、Roslynで適切にフォーマットされたnullable型の構文を生成します。
現在の実装では希望の出力が生成されていますが、のnullable型の書式は正しくありません、出力に余分な空白が含まれています。
SyntaxGenerator.NullableTypeExpression
によって生成されるnull可能な型を確実にするオプションがありますか?
コードスニペット
SyntaxGenerator.NullableTypeExpression
は、プロパティタイプに対応SyntaxNodeを返すために使用されているところです。
private SyntaxNode ToTypeExpression(Type type, bool nullable, SyntaxGenerator generator)
{
SyntaxNode baseType;
SyntaxNode propType;
SpecialType specialType = ToSpecialType(type);
if(specialType == SpecialType.None)
{
baseType = generator.IdentifierName(type.Name);
}
else
{
baseType = generator.TypeExpression(specialType);
}
if (nullable && type.IsValueType)
{
propType = generator.NullableTypeExpression(baseType);
}
else
{
propType = baseType;
}
return propType;
}
これで生成されたVB.NETコード:ここで提案するようFormatter.Format
を使用して
public int ? Salary
{
get
{
return GetAttributeValue<int ? >("salary").Value;
}
set
{
SetPropertyValue("Salary", "salary", value);
}
}
お困りですか? –
エコーエド、ここでエラーメッセージ、期待条件などは何ですか? –
あなたは '.AddAnnotat ion(Formatter.Annot ation)'を試みましたか? –