首页 > 解决方案 > Type.GetType(“{namespace.classname}{assemblyname}”) 在 C# 中不起作用

问题描述

  1. Type type1=Type.GetType({namespace.classname}{assemblyname}) //string value
  2. Type type =typeof(namespace.class name);//class name

如果我把这两个放在一起,那么 type1 加载值但是当只运行第 1 行时 type1 值为 null,即使它们都是两个单独的变量这是一个奇怪的问题

我需要使用激活器并使用字符串调用方法类和方法

标签: c#.netstringactivatorgettype

解决方案


我不知道我是否理解你的问题。您似乎正在寻找有关如何使用System.Activator. 当您提出问题时,如果您可以提供尽可能多的代码、上下文和清晰度来帮助指导人们回答您的问题,这总是有帮助的。请考虑花一些时间查看Microsoft 文档中的说明和示例。

我写了几行示例代码来说明 Activator 可以接受参数后面的Type参数。该代码说明了Person可以通过需要字符串参数的构造函数来创建对象,方法是typeof(Person)Activator.CreateInstance. 希望这会有所帮助。

class Person
{
    public string Name { get; set; }

    public Person(string name)
    {
        Name = name;
    }
}
    
class Program
{
    static void Main(string[] args)
    {
        var result = Activator.CreateInstance(typeof(Person), "Joe");
        if (result is Person person)
        {
            Console.WriteLine("Created new person:");
            Console.WriteLine(person.Name);
        }
    }
}

推荐阅读