【发布时间】:2019-07-07 22:44:52
【问题描述】:
我有字符串“Car”,我想从中获取类型Car。我的班级车是:
namespace MySolution.MyProjectA
{
public class Car
{
...
}
}
我尝试获取这样的类型,但它返回 null:
Type myType = Type.GetType("MySolution.MyProjectA.Car"); // returns null
给定一个代表我的类型的字符串变量(即“Car”),我如何获得它的类型 Car?
更新和解决方案
感谢@AsafPala 的建议 (Type.GetType("namespace.a.b.ClassName") returns null),我得到了它的工作。事实证明,如果您从解决方案中的另一个项目(这是另一个程序集)调用 GetType,您还必须提供程序集名称。
由于 MySolution 有 2 个项目 MyProjectA 和 MyProjectB,它们是同一解决方案中的 2 个单独的项目(或程序集),因此您需要提供您的类型的完全指定的程序集名称(即 MySolution.MyProjectA.Car)和程序集名称(即 @ 987654328@) 以逗号分隔如下:
Type myType = Type.GetType("MySolution.MyProjectA.Car,MySolution.MyProjectA");
更新和解决方案
由于我在另一个项目(与程序集相同)中调用此代码,我需要提供完全指定的类型名称和程序集名称,以逗号分隔,如下所示:
namespace MySolution.MyProjectB
{
public class MyClass
{
...
...
public void MyMethod()
{
// this wont work, I get null back
//Type myType = Type.GetType("MySolution.MyProjectA.Car");
Type myType = Type.GetType("MySolution.MyProjectA.Car,MySolution.MyProjectA"); //this works
...
}
}
}
【问题讨论】:
-
请编辑您的existing question 并添加更多详细信息,而不是针对同一问题要求新的。即使这个问题也没有显示相关的细节;你应该在班级周围显示
namespace(它可能与"MySolution.MyProject"不同)。 -
@RufusL 命名空间是正确的,我也按照您的要求添加了该信息。问题很简单,不知道还有什么不清楚的。另外,它是前一个的简化版本(所以我不再问它),我只关注一件事,即从字符串“Car”中获取实际类型的 Car。
-
你从哪里打电话给
GetType?你的代码对我来说很好。
标签: c# .net-assembly typeof gettype