Научиться использовать рефлексию в C# для исследования структуры классов, их полей, свойств, методов и атрибутов.
Закрепить навыки работы с библиотеками System.Reflection, xUnit.
Необходимо создать программу, которая с помощью рефлексии анализирует указанный класс и выводит информацию о его структуре. Код должен быть покрыт тестами, проверяющими корректность работы анализатора.
ClassAnalyzer, который принимает тип класса в конструкторе.public IEnumerable<string> GetPublicMethods()public IEnumerable<string> GetMethodParams(string methodname)public IEnumerable<string> GetAllFields()public IEnumerable<string> GetProperties()public bool HasAttribute<T>() where T : AttributexUnit.using Xunit;
using Moq;
public class TestClass
{
public int PublicField;
private string _privateField;
public int Property { get; set; }
public void Method() { }
}
[Serializable]
public class AttributedClass { }
public class ClassAnalyzerTests
{
[Fact]
public void GetPublicMethods_ReturnsCorrectMethods()
{
var analyzer = new ClassAnalyzer(typeof(TestClass));
var methods = analyzer.GetPublicMethods();
Assert.Contains("Method", methods);
}
[Fact]
public void GetAllFields_IncludesPrivateFields()
{
var analyzer = new ClassAnalyzer(typeof(TestClass));
var fields = analyzer.GetAllFields();
Assert.Contains("_privateField", fields);
}
}
Дополните набор тестами для проверки имен свойств и атрибутов.
ClassAnalyzer.using System;
using System.Reflection;
using System.Collections.Generic;
public class ClassAnalyzer
{
private Type _type;
public ClassAnalyzer(Type type)
{
_type = type;
}
}
Важно! Нельзя использовать циклы.
Reflection in .NET - Microsoft Docs
Официальная документация по рефлексии в .NET от Microsoft.
xUnit.net - Microsoft Docs
Руководство по unit-тестированию с использованием xUnit.
System.Reflection Namespace - Microsoft Docs
Документация по пространству имен System.Reflection.
Attributes in C# - Microsoft Docs
Руководство по работе с атрибутами в C#.