Я пытаюсь написать свое первое расширение ReSharper и я застрял на следующей задаче:Как получить тип экземпляра из IType (Resharper 8 SDK)
Как получить разрешенную Тип от IType дескриптора из этого?
Для фона я пытаюсь написать анализатор, который использует инструмент для проверки совместимости двух аргументов типа.
До сих пор я получил это
[ElementProblemAnalyzer(new[] { typeof(IInvocationExpression) })]
public class MyAnalyzer : IElementProblemAnalyzer`
{
public void Run(ITreeNode element, ElementProblemAnalyzerData analyzerData, IHighlightingConsumer consumer)
{
...
var typeArgs = meaningfulChildren.FirstOrDefault(o => o is ITypeArgumentList) as ITypeArgumentList;
IType psiType = typeArgs.TypeArguments[0];
Type actualType = psiType.ResolvedType; // No such property
}
}
Я боялся, что это может быть так. Я пытаюсь построить расширение ReSharper для AutoMapper с целью, чтобы он обеспечивал выделение, если он определяет, что типы, которые вы показываете, не полностью «отображаются». Для этого мне нужно использовать вызовы 'Mapper.CreateMap()' с фактическими типами. –
Если вы можете достаточно легко реплицировать логику, вы сможете записать ее с помощью ReSharper - существуют различные утилиты, которые будут проверять совместимость двух типов (на основе исходного кода). – citizenmatt
К сожалению, здесь нет тривиальной совместимости - это не просто назначается в обычном смысле, это «все свойства типа назначения« гидратируются »из типа источника или любого из его дочерних свойств, если вы их сглаживаете». Я проверил и, к сожалению, они также не добавили слой абстракции поверх системы типа .Net, поэтому я не мог легко подделать его. Это может быть больше проблем, чем того стоит. Я ценю ваш совет. –