繁体   English   中英

使用反射动态查询程序集

[英]Using reflection to dynamically query an assembly

我在动态使用反射方面遇到困难,例如。 查询.exe文件,而无需为我要查询的每个程序集添加引用。

因此,例如,下面的代码是获取保留的类然后进行检查的常规方法。

AssemblyName assembly_name = new AssemblyName( "Name" ); 

问题不是在参数中添加参数,而是代码需要直接引用要检查的新程序集。

欢迎任何建议。

听起来您实际上只是在尝试在执行时加载程序集。 查看Assembly.LoadAssembly.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);
}

所有其他方法必须使用LoadLoadFileLoadFrom等。

也许您正在寻找类似Cecil的产品 它是一个库(在Windows和其他平台上可用),可以查询元数据而无需解析所有引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM