c#-如何确定程序集名称是否与请求的部分程序集名称匹配
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-如何确定程序集名称是否与请求的部分程序集名称匹配,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1294字,纯文字阅读大概需要2分钟。
内容图文
![c#-如何确定程序集名称是否与请求的部分程序集名称匹配](/upload/InfoBanner/zyjiaocheng/674/603118b2442f4f0585abfe4aec4c4a12.jpg)
在我的应用程序中,我想测试给定程序集列表中的任何条目是否符合要求的程序集名称.
由于我的应用程序的结构,我必须提供一些机制来帮助应用程序进行程序集加载(如this knowledge base article中所述).
本文提供了一种确定加载的程序集是否符合请求的有趣方式.
if(strAssmbName.FullName.Substring(0, strAssmbName.FullName.IndexOf(","))==args.Name.Substring(0, args.Name.IndexOf(",")))
当所提供的程序集名称仅是名称时,这种方法对我造成了问题,因为args.Name不包含,::
private Assembly CurrentDomainAssemblyResolve( object sender, ResolveEventArgs args ) {
foreach( Assembly pluginAssembly in LoadedPluginAssemblies ) {
if( pluginAssembly.FullName.Substring( 0, pluginAssembly.FullName.IndexOf( "," ) ) == args.Name.Substring( 0, args.Name.IndexOf( "," ) ) ) {
return pluginAssembly;
}
}
return null;
}
作品:
MyApp.JobDetails, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
ArgumentOutOfRangeException:
MyApp.JobDetails
显然,我可以优化字符串匹配,直到它可以按需要工作为止,但是没有更好的方法来处理此问题吗?我应该如何知道给定的程序集何时是有效的匹配项?
解决方法:
您可能想使用AssemblyName.ReferenceMatchesDefinition
AssemblyName name = new AssemblyName( args.Name );
foreach( Assembly pluginAssembly in LoadedPluginAssemblies ) {
if( AssemblyName.ReferenceMatchesDefinition( name, pluginAssembly.GetName() ) )
return pluginAssembly;
}
内容总结
以上是互联网集市为您收集整理的c#-如何确定程序集名称是否与请求的部分程序集名称匹配全部内容,希望文章能够帮你解决c#-如何确定程序集名称是否与请求的部分程序集名称匹配所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。