C# Type.GetType传递参数示例
时间: 2023-07-12 07:19:27 浏览: 118
当使用 Type.GetType 方法时,可以传递一个字符串参数,表示要获取的类型的名称。这个字符串可以包含类型的名称、命名空间和程序集的名称。下面是一个简单的示例,演示如何使用 Type.GetType 方法获取指定类型的 Type 对象:
```csharp
// 获取 System.String 类型的 Type 对象
Type stringType = Type.GetType("System.String");
```
如果要获取的类型位于另一个程序集中,则需要在类型名称字符串中包含程序集的名称。例如,假设我们要获取 MyNamespace.MyClass 类型的 Type 对象,它位于 MyAssembly.dll 程序集中,可以这样写:
```csharp
// 获取 MyNamespace.MyClass 类型的 Type 对象
Type myClassType = Type.GetType("MyNamespace.MyClass, MyAssembly");
```
注意,这里的类型名称字符串中包含了命名空间和程序集的名称,用逗号分隔。另外,程序集的名称可以是程序集的文件名、程序集的全名或程序集的简称。如果程序集的名称是简称,则需要在应用程序的配置文件中指定程序集的映射关系。
相关问题
C#通过反射调用有参数的方法
在C#中,使用反射调用有参数的方法需要以下步骤:
1. 获取该方法的MethodInfo对象,可以通过Type.GetMethod方法获取。
2. 通过MethodInfo对象的Invoke方法调用该方法,并传递参数。
下面是一个示例代码:
```csharp
using System;
using System.Reflection;
public class MyClass
{
public void MyMethod(string arg1, int arg2)
{
Console.WriteLine("arg1 = {0}, arg2 = {1}", arg1, arg2);
}
}
class Program
{
static void Main(string[] args)
{
// 创建一个MyClass对象
MyClass obj = new MyClass();
// 获取MyMethod方法的MethodInfo对象
MethodInfo method = obj.GetType().GetMethod("MyMethod");
// 调用MyMethod方法,并传递参数
method.Invoke(obj, new object[] { "hello", 123 });
Console.ReadLine();
}
}
```
在上面的代码中,我们首先创建了一个`MyClass`对象,然后获取了`MyMethod`方法的`MethodInfo`对象。接着,我们通过`Invoke`方法调用了`MyMethod`方法,并传递了两个参数。最后,程序输出了`arg1 = hello, arg2 = 123`。
c#反射调用dll中的方法
要调用DLL中的方法,需要使用C#中的反射。以下是一个简单的示例:
首先,加载DLL文件:
```
Assembly assembly = Assembly.LoadFrom("yourDll.dll");
```
然后,获取要调用的类的Type:
```
Type type = assembly.GetType("yourNamespace.yourClass");
```
接下来,获取要调用的方法的MethodInfo:
```
MethodInfo methodInfo = type.GetMethod("yourMethod");
```
最后,使用Invoke方法调用该方法:
```
object result = methodInfo.Invoke(null, new object[] { /* 参数 */ });
```
其中,第一个参数为实例对象,由于该示例中没有实例化对象,因此传递null。第二个参数为方法的参数数组。
注意,要调用的方法必须是公共的静态方法或公共的实例方法。如果是私有方法,需要使用BindingFlags设置访问权限。
阅读全文