我有一个模板,它为类上的属性生成代码。我需要检查每个属性的类型,并对不同的类型进行不同的处理(在我的情况下,我需要检查Enum属性(。
例如,如果有这样的情况,我将如何实现IsEnum?:
if (attribute.IsEnum()) {
statements.Add($".HasConversion(new EnumToStringConverter<{attribute.Type.Element.Name}>());");
}
实现这一点的一种方法是使用该属性的Specialization Type的Extension方法。示例:
public static class AttributeExtensions
{
public static bool IsEnum(this AttributeModel attribute)
{
return attribute.Type.Element.SpecializationTypeId == EnumModel.SpecializationTypeId;
}
}