【发布时间】:2015-10-28 18:42:46
【问题描述】:
我有一个从第三方程序集抛出的 FTP 异常,这是非常通用的:
Exception of type 'JSchToCSharp.SharpSsh.jsch.SftpException' was thrown.
在检查异常时,我看到有一个名为 message(小写 m)的私有/内部成员包含我的错误消息:
我怎样才能得到这个message成员的价值?
我尝试使用反射来获取它,但是从 GetValue 返回 null:
BindingFlags bindFlags = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic
| BindingFlags.Static;
FieldInfo field = type.GetField(fieldName, bindFlags);
var value = field.GetValue(instance);
return value.ToString();
它似乎不是 Non-Public 或 Static,所以我有点不确定将什么用作我的 BindingFlags.
谢谢
【问题讨论】:
-
@SonerGönül 将返回断点中指定的
Exception of type ... -
这是哪个 SSH 库?
-
@Yuval Itzchakov 这是 JSchToCSharp.SharpSSH
-
它是开源的吗?你是从哪里弄来的?
-
这个库很糟糕,它完全无法初始化它的异常基类。修复它是最好的。
message成员否则是一个公共字段,使用默认绑定标志就足够了。或者只是简单地捕获 SftpException,这样您就不必使用反射。
标签: c# exception reflection