我得到"方法只能在一个类型上被调用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)
{
...
}