这个应该怎么实现?

lys1706228 2008-11-27 10:08:56
我要设计一个数据入库的组件,如果一个项目引用了这个组件,项目需要写入入库日志。

怎么才能让这个组件满足项目的要求,又不依赖项目呢?该怎么设计呢?
...全文
181 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
enterpriselibrary,有比较经典的实现。
lys1706228 2008-11-28
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 tmxk2002 的回复:]
呵呵你也还没明白我的意思,你与其还传一个这样的数据回去,还不如你把这个信息传递给provider,然后项目组的人把对你想传回去的信息要处理的逻辑写在provider的实现上就可以了,这样每个项目组可以自定义自己的具体实现,而你的组件丝毫不用修改,否则如果你可以通过return返回,或者ref 返回,每个项目组都不一样,你就要为每一个项目写一个返回值了。
[/Quote]
----------------------------------
谢谢 我去找点provider模式资料看看,你有啥好的,共享下 呵呵
chenfan31 2008-11-27
  • 打赏
  • 举报
回复
帮顶
lys1706228 2008-11-27
  • 打赏
  • 举报
回复
在入库组件中,定义一个委托 返回一个DataTable 信息 这样好吗?就是把日志给项目,项目爱怎么操作,他自己定
gomoku 2008-11-27
  • 打赏
  • 举报
回复
1, use interfaces to decouple the dependencies (the most common approach).
2, possibly AOP (Aspect-oriented programming) if you component derives from MarshalByRefObject.
  • 打赏
  • 举报
回复
呵呵,可以用Provider的模式来解决,就是在你实现写数据库的功能之外允许扩展,比如定义一个比较通用的接口,这个接口会在你做完数据入库操作后被调用,而实现这个接口的类就以provider的方式出现,可以配置到配置文件里,如果配置了相关实现的类的type描述,就加载进来执行。否则就不会执行,那么这样就不依赖于项目了,当项目需要时你就去实现这个接口并以provider的方式配置供给这个组件,否则就什么都不要配置
devilli 2008-11-27
  • 打赏
  • 举报
回复
帮顶
长沙三毛 2008-11-27
  • 打赏
  • 举报
回复
1)考虑各种情况的写入信息,然后写类并封装;
2)给出一个接口,要求引用该组件的项目(类)必须实现该接口,以后其他的项目使用时也要实现该接口
quanhuang98bisha 2008-11-27
  • 打赏
  • 举报
回复
帮顶
jin20000 2008-11-27
  • 打赏
  • 举报
回复
学习
  • 打赏
  • 举报
回复
呵呵你也还没明白我的意思,你与其还传一个这样的数据回去,还不如你把这个信息传递给provider,然后项目组的人把对你想传回去的信息要处理的逻辑写在provider的实现上就可以了,这样每个项目组可以自定义自己的具体实现,而你的组件丝毫不用修改,否则如果你可以通过return返回,或者ref 返回,每个项目组都不一样,你就要为每一个项目写一个返回值了。
lys1706228 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 tmxk2002 的回复:]
引用 9 楼 lys1706228 的回复:
引用 4 楼 tmxk2002 的回复:
呵呵,可以用Provider的模式来解决,就是在你实现写数据库的功能之外允许扩展,比如定义一个比较通用的接口,这个接口会在你做完数据入库操作后被调用,而实现这个接口的类就以provider的方式出现,可以配置到配置文件里,如果配置了相关实现的类的type描述,就加载进来执行。否则就不会执行,那么这样就不依赖于项目了,当项目需要时你就去实现这个接口并以provider…
[/Quote]
---------------------
我们的入库是这样的,把一个mdb的库,入到另外的oracle里,项目知道要写日志,但是项目不知道我的入库组件修改了那些表,我要把这些信心在入库之后传回给项目,谢谢你关心我的问题,再次请教
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 lys1706228 的回复:]
引用 4 楼 tmxk2002 的回复:
呵呵,可以用Provider的模式来解决,就是在你实现写数据库的功能之外允许扩展,比如定义一个比较通用的接口,这个接口会在你做完数据入库操作后被调用,而实现这个接口的类就以provider的方式出现,可以配置到配置文件里,如果配置了相关实现的类的type描述,就加载进来执行。否则就不会执行,那么这样就不依赖于项目了,当项目需要时你就去实现这个接口并以provider的方式配置供给这个组件,否则就什…
[/Quote]
那就奇怪了,你的组件是被项目调用的,也就是说项目应该在调用你之前就知道要写的日志了,干嘛还要你再传回去呢?你放出接口,让每个项目组的人去扩展他们自己的provider不就完了?还传回去,那是不好的设计额:)
qiqundelang 2008-11-27
  • 打赏
  • 举报
回复
这个思路很好,关注
lys1706228 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gomoku 的回复:]
1, use interfaces to decouple the dependencies (the most common approach).
2, possibly AOP (Aspect-oriented programming) if you component derives from MarshalByRefObject.
[/Quote]
--------------------------------
1。不是很懂
2。不是基于这个的MarshalByRefObject

lys1706228 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hulihui 的回复:]
1)考虑各种情况的写入信息,然后写类并封装;
2)给出一个接口,要求引用该组件的项目(类)必须实现该接口,以后其他的项目使用时也要实现该接口
[/Quote]
--------------------
不是所有的项目都要写日志,不写得就没必要实现了
lys1706228 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 tmxk2002 的回复:]
呵呵,可以用Provider的模式来解决,就是在你实现写数据库的功能之外允许扩展,比如定义一个比较通用的接口,这个接口会在你做完数据入库操作后被调用,而实现这个接口的类就以provider的方式出现,可以配置到配置文件里,如果配置了相关实现的类的type描述,就加载进来执行。否则就不会执行,那么这样就不依赖于项目了,当项目需要时你就去实现这个接口并以provider的方式配置供给这个组件,否则就什么都不要配置
[/Quote]
-------------------------------------
每个项目的日志表不同,我不打算把写日志的功能,放在入库组件中,只是想数据入库后,把日志传回项目
whitechololate 2008-11-27
  • 打赏
  • 举报
回复
满足所有条件的接口,调用时实现
用第三方控件帮忙

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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