[英]Using reflection to dynamically query an assembly
我在动态使用反射方面遇到困难,例如。 查询.exe文件,而无需为我要查询的每个程序集添加引用。
因此,例如,下面的代码是获取保留的类然后进行检查的常规方法。
AssemblyName assembly_name = new AssemblyName( "Name" );
问题不是在参数中添加参数,而是代码需要直接引用要检查的新程序集。
欢迎任何建议。
听起来您实际上只是在尝试在执行时加载程序集。 查看Assembly.Load
和Assembly.ReflectionOnlyLoad
。
我不太确定您所说的“查询”是什么意思。 如果您想知道如何使用反射从程序集中创建实例,请参见以下示例:
// From within the current assembly
public CartesianType CreateInstance(string fullyQualifiedClassName)
{
Assembly assembly = Assembly.GetExecutingAssembly();
Type target = assembly.GetType(fullyQualifiedClassName, true, true);
return (CartesianType)Activator.CreateInstance(target);
}
// From an external assembly already referenced in your project
public SomeClass CreateInstance(string fullyQualifiedClassName)
{
Assembly assembly = Assembly.GetAssembly(typeof(SomeClass));
Type target = assembly.GetType(fullyQualifiedClassName, true, true);
return (SomeClass)Activator.CreateInstance(target);
}
所有其他方法必须使用Load
或LoadFile
, LoadFrom
等。
也许您正在寻找类似Cecil的产品 。 它是一个库(在Windows和其他平台上可用),可以查询元数据而无需解析所有引用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.