反射是C#中非常重要的一个特性,它可以让我们在运行时动态地获取程序集中的类型信息,以及调用其中的方法和属性。下面是一个简单的反射案例:
```csharp
using System;
using System.Reflection;
namespace ReflectionDemo
{
class Program
{
static void Main(string[] args)
{
// 加载程序集
Assembly assembly = Assembly.LoadFrom("MyAssembly.dll");
// 获取类型信息
Type type = assembly.GetType("MyNamespace.MyClass");
// 创建对象
object obj = Activator.CreateInstance(type);
// 调用方法
MethodInfo method = type.GetMethod("MyMethod");
method.Invoke(obj, null);
// 获取属性
PropertyInfo property = type.GetProperty("MyProperty");
Console.WriteLine(property.GetValue(obj));
// 设置属性
property.SetValue(obj, "Hello, World!");
// 再次获取属性
Console.WriteLine(property.GetValue(obj));
}
}
namespace MyNamespace
{
public class MyClass
{
public string MyProperty { get; set; }
public void MyMethod()
{
Console.WriteLine("Hello, Reflection!");
}
}
}
}
```
在这个案例中,我们首先加载了一个名为"MyAssembly.dll"的程序集,然后获取了其中的"MyNamespace.MyClass"类型信息。接着,我们使用Activator.CreateInstance方法创建了一个"MyNamespace.MyClass"的实例,并调用了其中的"MyMethod"方法。然后,我们获取了"MyProperty"属性,并输出了它的值。接着,我们使用property.SetValue方法设置了"MyProperty"属性的值,并再次获取了它的值并输出。这个案例只是反射的冰山一角,如果你想深入了解反射的更多内容,可以参考MSDN文档或者其他相关资料。
C#【反射】
最新推荐文章于 2024-08-30 07:24:23 发布