【发布时间】:2021-01-03 12:13:09
【问题描述】:
我可以使用属性在我的代码中显式设置所有类型转换器,但是在使用 TypeDescriptor.GetConverter 时如何获取隐式类型转换器。
private static string? GetTypeConverter(Compilation compilation, IPropertySymbol propertySymbol)
{
var typeConverterAttribute = compilation.GetTypeByMetadataName("System.ComponentModel.TypeConverterAttribute");
if (typeConverterAttribute is null)
{
return null;
}
var propertySymbolTypeConverter = GetTypeConverter(propertySymbol, typeConverterAttribute);
if (propertySymbolTypeConverter is not null)
{
return propertySymbolTypeConverter;
}
var propertySymbolTypeTypeConverter = GetTypeConverter(propertySymbol.Type, typeConverterAttribute);
if (propertySymbolTypeTypeConverter is not null)
{
return propertySymbolTypeTypeConverter;
}
// TODO: This does not work as it uses reflection.
// var type = Type.GetType(propertySymbol.Type.ToDisplayString());
// if (type is not null)
// {
// return TypeDescriptor.GetConverter(type).ToString();
// }
return null;
}
【问题讨论】:
标签: c# roslyn sourcegenerators