gpt4 book ai didi

c# - 如何从字符串中获取自定义类的类型 C#

转载 作者:行者123 更新时间:2023-11-30 23:20:27 26 4
gpt4 key购买 nike

我正在尝试为我的自定义类使用 GetType 方法。我将类的名称作为字符串,我想动态获取它的类型。对于位于不同目录中的两个不同类,我有相同的名称。

例如:

Folder1 中的 MyClass.cs:

namespace ConsoleApplication1.Folder1
{
public class MyClass : IClass
{
public void PrintMe()
{
System.Console.WriteLine("I am Folder 1 Class");
}
}
}

文件夹 2 中的 MyClass.cs:

namespace ConsoleApplication1.Folder2
{
public class MyClass : IClass
{
public void PrintMe()
{
System.Console.WriteLine("I am Folder 2 Class");
}
}
}

命名空间是 ConsoleApplication1

Folder1 和 Folder2 中存在同名的不同类。

我想从这样的字符串中获取它的类型:

var runtimeString = "Folder1.MyClass" 

MSDN中提到的方法名为 GetType(字符串文件名)

我如何获取文件的类型并在运行时从 serviceLocator 解析它,例如:

var typeOfMyClass = GetType(runtimeString);    
var instanceOfMyClass = ServiceLocator.Resolve<TypeOfMyClass>();

最佳答案

您似乎在描述对工厂方法的需求,类似于:

public class MyClassFactory : IMyClassFactory
{
private Dictionary<string, Action<IClass>> _factory =
new Dictionary<string, Action<IClass>>
{
["Folder1.MyClass"] = () => new ConsoleApplication1.Folder1.MyClass(),
["Folder2.MyClass"] = () => new ConsoleApplication1.Folder2.MyClass(),
...
};

public IClass GetClassInstance(string myClassName)
{
if (_factory.Contains(myClassName))
{
return _factory[myClassName]();
}
throw NoSuchClassException(myClassName);
}
}

关于c# - 如何从字符串中获取自定义类的类型 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39746433/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com