如何收到字符串值,找到具有相同名称的实体并将此实体用作类型?
谢谢!
答案 0 :(得分:0)
如果你在一个名为“RipperTest.dll”的程序集中有一个Type 它的命名空间是“RipperTest”,你可以将完全限定的程序集名称作为类型字符串。
在使用此类型之前,如果它不在调用程序集中,则必须确保它的程序集已加载。
在RipperTest.dll的RipperTest命名空间中名为“Ripper1”的类
namespace RipperTest
{
[Serializable]
public class Ripper1 : RipperBase
{
}
}
Type myType = Type.GetType("RipperTest.Ripper1");
然后再使用此类型
var newObject = Activator.CreateInstance(myType);
如果原始实例实现了特定的接口,则可以转换为该接口而不是返回对象。
像这样:var newObject = (IRipper)Activator.CreateInstance(myType);
如果您尝试从当前程序集返回类列表,则可以执行以下操作:
Assembly execAsm = Assembly.GetExecutingAssembly();
Type myType = (from type in execAsm.GetTypes()
where type.Name.Equals("YourTypeNameHere")
select type).FirstOrDefault();