怎么样设计这个类

lawbc 2010-07-10 06:57:00
假如类为ClassA
里面有一个方法为MethodA

用户调用了MethodA后,要知道这个方法执行成功还是失败,如果是失败,失败原因是什么,如果是成功,则返回一个路径名

如果用户没有调用MethodA方法,那么什么都获取不到,

如果这个方法返回bool值的话,那么失败原因和成功后的路径怎么返回?
如果把失败原因和成功后的路径设置为ClassA的属性,那么用户在没有调用MethodA方法的时候就可以调用,
这样是不是不好呢?

哎一直头疼,不知道怎么设计这样的类,请大家赐教
...全文
113 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
nima01 2010-07-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 yuxh81 的回复:]
很明显,结果具有一定结构
这样不知可行否

struct StructResult
{
bool Result; //执行是否成功
string ErrorCode; //失败原因
string Path; //路径
}
[/Quote]
返回一个结构也不错
nut799 2010-07-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 caozhy 的回复:]
(1)做成static,搞一个方法 GetLastError()。很多系统这样设计,比如Windows API。
(2)int MathodName(param1, param2, out returnvalue)
int表示statcode,也可以使用枚举
(3)throw相应的异常,让外部捕获,.NET类库自己就这么搞。
[/Quote]

第二个
支持
  • 打赏
  • 举报
回复
返回一个类,这个类2个字段:1是执行成功或失败的bool值,2是结果的字符串描述
NoReady 2010-07-11
  • 打赏
  • 举报
回复
抛出异常则表示不成功,在调用时捕获异常即可。
NoReady 2010-07-11
  • 打赏
  • 举报
回复
public string MethordA()
{
bool isValid = false;

//验证过程
//..........

if (true)
{
return path;
}
else
{
throw new Exception("验证失败!");
}
}
yuxh81 2010-07-11
  • 打赏
  • 举报
回复
很明显,结果具有一定结构
这样不知可行否

struct StructResult
{
bool Result; //执行是否成功
string ErrorCode; //失败原因
string Path; //路径
}
lawbc 2010-07-10
  • 打赏
  • 举报
回复
用异常的话是不行好的,因为只要调用了这个方法就要返回信息,
返回信息包括 成功与否 文件路径 失败原因

不知道用事件来做是否会好点呢
wuyq11 2010-07-10
  • 打赏
  • 举报
回复
做系统日志处理如log4net
out传递相关数据
或自定义异常处理类,实例化对象,异常数据保存为属性
再添加到数据库
lawbc 2010-07-10
  • 打赏
  • 举报
回复
这个不是异常的问题,里面是一个验证过程,验证成功返回true,失败返回false,成功的话还要返回一个文件夹的路径,失败的话要返回一个失败原因。

如果用out参数的话感觉不好,因为个人不喜欢用这个
如果返回值为一个对象的话,感觉是可以。但总有点不是设计的味道

很纠结,请高人指点呀
  • 打赏
  • 举报
回复
对于.net(当然也包括java)来说,它的标准做法是函数返回正常的要返回的数据(而不是什么true/false),如果有异常则用标准的异常机制(Exception、Exception.InnerException.....)。
threenewbee 2010-07-10
  • 打赏
  • 举报
回复
(1)做成static,搞一个方法 GetLastError()。很多系统这样设计,比如Windows API。
(2)int MathodName(param1, param2, out returnvalue)
int表示statcode,也可以使用枚举
(3)throw相应的异常,让外部捕获,.NET类库自己就这么搞。

17,741

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧