Я работаю над генерацией кода T4, для этого мне нужен CodeClass типа, который передается внутри конструктора BarAttribute.
class Baz { }
class Bar : Attribute { public Bar (Type type) { } }
[Bar(typeof(Baz))]
public class Foo
{
}
Это то, что у меня есть в моем шаблоне T4, я просто даю CodeAttribute '[Bar (typeof (Baz))]' функции:
private CodeClass GetType(CodeElement codeElement)
{
CodeAttribute attribute = (CodeAttribute)codeElement;
if (attribute.Name == "Bar")
{
foreach (CodeElement child in attribute.Children)
{
EnvDTE80.CodeAttributeArgument attributeArg = (EnvDTE80.CodeAttributeArgument)child;
WriteLine(attributeArg.Value);
}
}
return null;
}
Функция теперь просто напишет: typeof (Baz), как я могу получить CodeClass of Baz (который может быть внутри другой сборки в решении) без итерации по всем Projects, ProjectItems, CodeElements и т. Д.?