我怎样才能修复“Type.IsGenericParameter是真的”。错误?

时间:2014-05-14 14:13:09

标签: c# dll reflection loading

我得到“只能在Type.IsGenericParameter为true的Type上调用Method”。从下面的代码。我在这段代码的最后一行得到了这个错误。 ,我不知道如何解决这个问题。

byte[] domainMainDllFileBuffer = null;
string domainMainFilePath = "myDllPath...";
FileStream domainMainFs = new FileStream(domainMainFilePath, FileMode.Open, FileAccess.Read);
BinaryReader domainMainBr = new BinaryReader(domainMainFs);
long domainMainNumBytes = new FileInfo(domainMainFilePath).Length;
domainMainDllFileBuffer = domainMainBr.ReadBytes((int)domainMainNumBytes);

System.Reflection.Assembly domainMainAssembly = System.Reflection.Assembly.Load(domainMainDllFileBuffer);
IEnumerable<Type> domainMainTypes = domainMainAssembly.GetTypes().Where(t => t.BaseType != null);

2 个答案:

答案 0 :(得分:0)

为什么要尝试以二进制格式读取DLL?

你可以使用:

Assembly.LoadFrom("myDllPath...");

否则我无法理解你为什么会收到这个错误。你在程序集上调用的唯一方法是GetTypes(),你并没有真正调用类型本身的任何方法。

答案 1 :(得分:0)

为了获得该异常,您必须在某个尚未发布的地方调用.GenericParameterAttributes.GenericParameterPosition(或类似的方法)。如果是这种情况,您可以先验证类型是否为通用参数:

if(type.IsGenericParameter)
{
    ...
}