C # Отражение Назначение - PullRequest
0 голосов
/ 30 января 2019

так что мне нужна помощь с этим.Я попытался найти SOF, но мне не повезло.

Используя рефлексию, мне нужно протестировать класс .NET String.Мне нужно показать имя класса, интерфейсы, которые реализует этот класс, сборку, в которой этот класс найден, пространство имен этого класса, тип, который наследует, и базовую информацию.Является ли этот класс абстрактным, общим, запечатанным и т. Д. Я изучал это в течение 20 дней, и теперь мне не повезло, поэтому я изучал атрибуты, рефлексию, сборки и сборки метаданных, РЕДАКТИРОВАТЬ: Мой вопрос: какнапишите это правильно, я пробовал, как 1000x, и ничего, всегда некоторые ошибки, всегда ошибки, я не знаю, как начать ..

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Я знаю, что Марк уже ответил, но я хотел ответить на короткую версию вопроса «Как начать с отражения?»

По сути, вам нужна ссылка на тип.Для этого есть два метода: 1. В случае, если вы знаете тип (или это универсальный, например, <T>): typeof(MyType) или typeof(T).2. Если у вас есть экземпляр объекта , вам нужно сначала получить тип, который также прост: myObject.GetType()

В обоих случаях вы просто используете свойстваType объект, который вы получили, как показал Марк.

0 голосов
/ 30 января 2019
class Program
{
    static void Main()
    {
        TellMeAboutType(typeof(string));
    }
    static void TellMeAboutType(Type type)
    {
        Console.WriteLine("Name: " + type.Name);
        Console.WriteLine("Namespace: " + type.Namespace);
        Console.WriteLine("Assembly: " + type.Assembly.FullName);
        Console.WriteLine("AQN: " + type.AssemblyQualifiedName);
        Console.WriteLine("Abstract: " + type.IsAbstract);
        Console.WriteLine("Generic: " + type.IsGenericType);
        Console.WriteLine("Sealed: " + type.IsSealed);
        Console.WriteLine("Base Type: " + type.BaseType.FullName);
        foreach(var iType in type.GetInterfaces())
        {
            Console.WriteLine("Implements: " + iType.FullName);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...