我得到“只能在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);
答案 0 :(得分:0)
为什么要尝试以二进制格式读取DLL?
你可以使用:
Assembly.LoadFrom("myDllPath...");
否则我无法理解你为什么会收到这个错误。你在程序集上调用的唯一方法是GetTypes(),你并没有真正调用类型本身的任何方法。
答案 1 :(得分:0)
为了获得该异常,您必须在某个尚未发布的地方调用.GenericParameterAttributes
或.GenericParameterPosition
(或类似的方法)。如果是这种情况,您可以先验证类型是否为通用参数:
if(type.IsGenericParameter)
{
...
}