🌷🌷🌷🌷反射的使用(解析示例1):
🌷🌷🌷🌷属性的使用(解析示例2):
🌷🌷🌷🌷动态创建对象(解析示例3):
🌷🌷🌷🌷自定义属性(解析示例4):
代码示例1:反射的使用
using System;
using System.Reflection;
public class MyClass
{
public void MyMethod()
{
Console.WriteLine("Hello, World!");
}
}
public class Program
{
public static void Main()
{
Assembly assembly = Assembly.GetExecutingAssembly();
Type[] types = assembly.GetTypes();
foreach (Type type in types)
{
Console.WriteLine("Type: " + type.Name);
MethodInfo[] methods = type.GetMethods();
foreach (MethodInfo method in methods)
{
Console.WriteLine("Method: " + method.Name);
}
PropertyInfo[] properties = type.GetProperties();
foreach (PropertyInfo property in properties)
{
Console.WriteLine("Property: " + property.Name);
}
}
}
}
在这个示例中,我们使用了反射来获取程序集中的类型、方法和属性。首先,我们使用Assembly.GetExecutingAssembly()
方法获取当前程序集。然后,通过GetTypes()
方法获取程序集中的所有类型,并遍历每个类型。在遍历过程中,我们使用GetMethods()
方法获取类型的所有方法,并使用GetProperties()
方法获取类型的所有属性。最后,我们将获取到的类型、方法和属性信息打印出来。
这个示例展示了反射的用途和意义。通过反射,我们可以在运行时动态地获取和操作程序集、类型和成员的信息。这为我们实现一些高级的编程技巧提供了便利和灵活性。例如,我们可以根据特定的标记或命名约定自动发现和加载插件,而无需在编译时硬编码这些插件的信息。我们还可以在运行时动态地创建对象、调用方法和获取属性值,这对于实现通用的代码生成、自定义序列化和反序列化等功能非常有用。