C# узнать тип объекта в методе

Рейтинг: 0Ответов: 0Опубликовано: 21.04.2023

Есть код

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    Update update = new Update();
    var rr = update.GetType();
    Assembly assembly = Assembly.GetExecutingAssembly();
    
    // Получаем все типы из сборки
    Type[] types = assembly.GetTypes();
    
    // Ищем тип по имени
    string typeName = "update";
    Type? type = types.FirstOrDefault(t => t.FullName?.Contains(typeName) == true);
}

как можно узнать тип объекта в проекте по имени, через рефлексию доступа нет к переменным внутри метода, через Microsoft.CodeAnalysis пробовал так

var calls = root.DescendantNodes()
    .OfType<InvocationExpressionSyntax>()
    .Where(x => x.Expression is MemberAccessExpressionSyntax memberAccess && memberAccess.Expression is IdentifierNameSyntax identifier && !identifier.Identifier.Text.StartsWith("System") && !identifier.Identifier.Text.StartsWith("Microsoft"))
    .Select(x => ((IdentifierNameSyntax)((MemberAccessExpressionSyntax)x.Expression).Expression).Identifier.Text)
    .ToImmutableArray();
    
var variables_ = root.DescendantNodes()
    .OfType<VariableDeclaratorSyntax>()
    .Where(x => x.Identifier.Text == "userID")
    .Select(x => x.Initializer.Value)
    .OfType<MemberAccessExpressionSyntax>()
    .Where(x => x.Expression is InvocationExpressionSyntax invocation && calls.Contains(invocation.Expression.ToString()))
    .Select(x => x.Name.Identifier.Text)
    .ToImmutableArray();

здесь для примера искал по названию userID так как это переменная и объект не сторонней сборки, но результата не получил

Ответы

Ответов пока нет.