C# 在程序集中获取字符串而不加载它
我正在使用以下命令手动加载程序集:C# 在程序集中获取字符串而不加载它,c#,reflection,.net-assembly,C#,Reflection,.net Assembly,我正在使用以下命令手动加载程序集: Assembly _assembly = Assembly.ReflectionOnlyLoadFrom(PathToDllAssembly); 我可以检查类和/或方法的名称 为了访问方法,我必须加载程序集: Assembly _assembly = Assembly.LoadFile(PathToDllAssembly); 但是可以在程序集中获取字符串值,而无需实际加载它或在仅反射的上下文中加载它? 编辑: 我这样问是因为在我的程序集中我有key字符串,
Assembly _assembly = Assembly.ReflectionOnlyLoadFrom(PathToDllAssembly);
我可以检查类和/或方法的名称
为了访问方法,我必须加载程序集:
Assembly _assembly = Assembly.LoadFile(PathToDllAssembly);
但是可以在程序集中获取字符串
值,而无需实际加载它或在仅反射的上下文中加载它?
编辑:
我这样问是因为在我的程序集中我有key
字符串,它是一个加密字符串,我只想在解密的key
等于字符串时加载该程序集
这是我试图实现的一种小保护。基于
ReflectionOnlyLoadFrom
无法从已加载到中的程序集执行代码
仅反射上下文。要执行代码,请使用加载程序集
LoadFile方法
访问字段或属性的值或调用方法就是执行代码。因此,您必须使用LoadFile
至于您的安全措施,也许您应该查看以正确验证目标程序集的真实性。基于
ReflectionOnlyLoadFrom
无法从已加载到中的程序集执行代码
仅反射上下文。要执行代码,请使用加载程序集
LoadFile方法
访问字段或属性的值或调用方法就是执行代码。因此,您必须使用LoadFile
至于您的安全措施,也许您应该查看以正确验证目标程序集的真实性。如果您想要作为类的一部分的字符串,则必须加载给定的程序集。您可以做的一件事是将程序集加载到中,而无需任何权限(
新建PermissionSet(PermissionState.None);
),读取字符串,然后如果正确,则将其加载到主AppDomain中。如果需要作为类的一部分的字符串,则必须加载给定的程序集。可以做的一件事是将程序集加载到没有任何权限的中(新建PermissionSet(PermissionState.None);
),读取字符串,然后,如果正确,将其加载到主AppDomain中。