我有字符串“ Car”,我想从中获取类型Car
。我上课的车是:
namespace MySolution.MyProjectA
{
public class Car
{
...
}
}
我尝试获取这样的类型,但它返回null:
Type myType = Type.GetType("MySolution.MyProjectA.Car"); // returns null
给出一个表示我的类型(即“汽车”)的字符串变量,如何获得其类型汽车?
更新和解决方案
感谢@AsafPala在这里提供的建议(Type.GetType("namespace.a.b.ClassName") returns null),让我可以使用它。事实证明,如果要从解决方案中的另一个项目(另一个程序集)调用GetType,则还必须提供程序集名称。
由于MySolution有2个项目MyProjectA和MyProjectB,所以它们是同一解决方案中的2个独立项目(或程序集),因此您需要提供类型完全指定的程序集名称(即MySolution.MyProjectA.Car
)和程序集名称(即是MySolution.MyProjectA
),以逗号分隔,如下所示:
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
...
}
}
}
答案 0 :(得分:-3)
是的。您需要先将对象序列化为字符串。您可以使用json或xml作为序列化器类型。
然后在另一侧,使用相同的序列化程序对象将字符串反序列化为类的实例。
https://www.newtonsoft.com/json/help/html/DeserializeObject.htm
new Promise(...
http://www.janholinka.net/Blog/Article/11
XmlSerializer序列化器=新的XmlSerializer(typeof(List), 新的XmlRootAttribute(“ Products”));
StringReader stringReader =新的StringReader(xmlString);
列出productList = (列表)serializer.Deserialize(stringReader);
然后反序列化之后,您可以获取对象的类型