Я использую Roslyn для создания того, что должно быть генератором агностического кода языка для некоторого уровня доступа к данным. Он будет использовать метаданные для вывода желаемого кода. Ожидается, что будут возвращены версии кода C# и VB.NET.Создайте хорошо форматированный синтаксис с нулевым типом с Roslyn при генерации языкового агностического кода
Текущая реализация генерирует желаемый результат, однако типы нулевых значений не хорошо отформатированы, выход содержит дополнительные пробелы.
Есть ли опция обеспечения типа nullable, сгенерированного SyntaxGenerator.NullableTypeExpression
, вернуть хорошо отформатированный - без пробелов - декларация?
фрагменты кода
Это где 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:
Public Property Salary As Integer?
Get
Return GetAttributeValue(Of Integer?)("salary").Value
End Get
Set(value As Integer?)
SetPropertyValue("Salary", "salary", value)
End Set
End Property
Это C# код, примечания белых пространств:
public int ? Salary
{
get
{
return GetAttributeValue<int ? >("salary").Value;
}
set
{
SetPropertyValue("Salary", "salary", value);
}
}
Каков ваш вопрос? –
Echoing Ed, что такое сообщение об ошибке, ожидаемое состояние и т. Д. Здесь? –
Вы пробовали '.W ithAdditionalAnnotat ионы (Formatter.Annot ation)'? –