Type.GetType(“namespace.classnameassemblyname”) 在 C# 中不起作用

Posted

技术标签:

【中文标题】Type.GetType(“namespace.classnameassemblyname”) 在 C# 中不起作用【英文标题】:Type.GetType(“namespace.classnameassemblyname”) not working in c#Type.GetType(“namespace.classnameassemblyname”) 在 C# 中不起作用 【发布时间】:2021-04-30 12:48:40 【问题描述】:
    Type type1=Type.GetType(namespace.classnameassemblyname) //string value Type type =typeof(namespace.class name);//class name

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

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

【问题讨论】:

注意Assembly.qualified name在类名和程序集名之间必须有逗号。 【参考方案1】:

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

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

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);
        
    

【讨论】:

以上是关于Type.GetType(“namespace.classnameassemblyname”) 在 C# 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Type.GetType()反射另外项目中的类时返回null的解决方法

Type.GetType()反射另外项目中的类时返回null的解决方法

c# 反射时GetType方法查找Type的分析

Type.GetType(string.contains(','))

如果 typeof(Xyz) 存在,为啥 System.Type.GetType("Xyz") 返回 null?

Type.GetType()在跨程序集反射时返回null的解决方法