如何修复"Type.IsGenericParameter is true."错误?



我得到"方法只能在一个类型上被调用IsGenericParameter是true ",来自下面的代码。我在这段代码的最后一行得到这个错误。,我不知道如何解决这个问题。

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);

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

你可以直接使用:

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

否则我真的看不出你为什么会得到那个错误。您在程序集上调用的唯一方法是GetTypes(),并且您实际上没有在类型本身上调用任何方法。

为了得到那个例外,你必须调用.GenericParameterAttributes.GenericParameterPosition(或一些类似的方法),你没有张贴的地方。如果是这种情况,可以先验证类型是否为泛型参数:

if(type.IsGenericParameter)
{
    ...
}

相关内容

  • 没有找到相关文章

最新更新