gpt4 book ai didi

c# - 通过将类名作为字符串提供来获取引用程序集中的类型?

转载 作者:太空狗 更新时间:2023-10-29 17:29:01 25 4
gpt4 key购买 nike

这些是类似的问题:How-to: Load a type from a referenced assembly at runtime using a string in Silverlight , GetType on a class in a referenced assembly fails但是这两个答案都不起作用。

我有一个 MVC 项目,它从数据库中提取数据,其中包括作为字符串的普通类型。这些类型在引用的程序集中,而不是在 MVC 项目中。

例如,假设我的引用程序集名称是 MyFramework 和普通类型名称 Car,完整的类型名称可以是 MyFramework.Cars.CarMyFramework.Vehicles.Cars.Car 或其他变体。我所拥有的只是引用的程序集名称和普通类名称作为字符串。无论完整的类型名称如何,我如何才能获得类型?

最后,我能否在调用 GetType() 的引用程序集中编写一个函数并在 MvC 项目中使用它,这样我就可以放弃包含程序集名称?我想删除已知的程序集名称,所以我想我可以在引用的程序集中编写一个 Util,例如:

namespace MyFramework //the referenced assembly
{
public static class TypeUtil
{
public static Type GetFrameworkType(string typeName)
{
return Type.GetType(typeName);
}
}
}

然后在我的 MVC 项目中我可以调用它而不需要程序集作为字符串名称。这可能吗?还是我总是需要程序集名称?

最佳答案

可能当时没有加载引用的程序集。另外,我从你的问题中了解到你没有完整的类型名称,只有类名。
那么你应该沿着这条线尝试一些东西:

Type type = Assembly.Load("YourAssemblyName").GetTypes().First(t => t.Name == "ShortTypeName");

希望我理解正确。

关于c# - 通过将类名作为字符串提供来获取引用程序集中的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11994057/

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