【发布时间】:2017-07-07 02:57:40
【问题描述】:
我想拿这个:
try
{
Assembly assembly = Assembly.Load("This.Is.My.Assembly.Name");
}
catch (Exception)
{
}
并且做一些类似的事情,但永远不要让它抛出异常。也许做一些返回空值而不是异常的事情,在尝试加载程序集之前检查程序集是否存在。完成此任务的最优雅方法是什么?
【问题讨论】:
-
为什么要防止异常发生?这听起来像是一个 XY 问题。加载程序集时可能会失败很多;未找到具有所请求名称的文件只是该方法引发异常的原因之一。
-
那是最优雅的方式。这就是例外。检查 null 是一种倒退。
-
在这种情况下,我正在检查程序集中是否存在类以确定是否支持某个功能。所有其他版本也使用相同的逻辑,所以对于 10 个版本,我会得到一个例外。对于一个受支持的版本,它将工作并返回 true。所以这就是为什么我不想获得异常路线。所以更常见的情况会抛出异常,如果可能的话我想避免。
-
这是一次启动,对吧?就个人而言,我不会担心。但是等一下,你正在检查一个类的存在吗?程序集本身会一直存在吗?
-
您的观点实际上是有效的。客户端代码只会在此程序集本身始终存在的版本上使用新的逻辑实现。所以我确实走了例外路线。感谢 cmets。
标签: c# .net-assembly