Kiq*_*net 4 c# parsing assemblies
我需要解析程序集限定名而不使用AssemblyName,因为我得到System.IO.FileLoadException(程序集不可用).
我只管理字符串而不是程序集.如果我有一个字符串,我希望得到asm1和asm2字符串变量的字符串,如下所示.
FullName ="CalidadCodigo.ParserSQL.Reglas.AnalisisSintactico"
汇编="CalidadCodigo.ParserSQL.AnalisisSintactico"
版本="版本= 1.0.0.0"
文化="文化=中立"
公共令牌="PublicKeyToken = 9744987c0853bf9e"
任何建议,示例代码?
var asm1 = "CalidadCodigo.ParserSQL.Reglas.AnalisisSintactico,CalidadCodigo.ParserSQL.AnalisisSintactico, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9744987c0853bf9e";
var asm2 = "CalidadCodigo.ParserSQL.Reglas.AnalisisSintactico, CalidadCodigo.ParserSQL.AnalisisSintactico , Version=1.0.0.0 , Culture=neutral, PublicKeyToken=9744987c0853bf9e ";
Run Code Online (Sandbox Code Playgroud)
引发异常:System.IO.FileLoadException:El nombre de ensamblado oelcódigobasedado noesválido.(ExcepcióndeHRESULT:0x80131047).
System.Reflection.AssemblyName.nInit(Assembly&assembly,Boolean forIntrospection,Boolean raiseResolveEvent)System.Reflection.AssemblyName.nInit()System.Reflection.AssemblyName..ctor(String assemblyName)
小智 5
乔恩(Jon)的答案不包含数组类型,数组类型的类型名称中可能带有逗号,如“ System.String [,],mscorlib,....”中所示-请参阅http://msdn.microsoft.com/zh-cn /library/yfsftwz6.aspx了解详情。
更好:
int index = -1;
int bcount = 0;
for (int i = 0; i < aqtn.Length; ++ i)
{
if (aqtn[i] == '[')
++bcount;
else if (aqtn[i] == ']')
--bcount;
else if (bcount == 0 && aqtn[i] == ',')
{
index = i;
break;
}
}
string typeName = aqtn.Substring(0, index);
var assemblyName = new System.Reflection.AssemblyName(aqtn.Substring(index + 1));
Run Code Online (Sandbox Code Playgroud)