c# winform spring.net

maoyongkang 2010-03-30 12:33:57
各位:请帮忙!
我的问题是,在winform中引用了spring框架,但一直报错误:未将对象引用设置到对象的实例!
不知道还有哪里配置错误了,请各位大侠帮忙看看那。

我的配置文件及代码如下
public partial class Form1 : Form
{
private HelloWorld helloWorldDAO;

public HelloWorld HelloWorldDAO
{
get { return helloWorldDAO; }
set { helloWorldDAO = value; }
}

public Form1()
{
InitializeComponent();
}

private void btn1_Click(object sender, EventArgs e)
{
//IApplicationContext context = ContextRegistry.GetContext();

label1.Text = helloWorldDAO.sayHello("maoyong");//这儿报错:未将对象引用设置到对象的实例!

//IApplicationContext context = ContextRegistry.GetContext();
//object o = context.GetObject("HelloWorldDAO");
//label1.Text = o.ToString();

}
}


配置文件如下:
<configSections>
<sectionGroup name="spring">
<section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core"/>
<section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
</sectionGroup>

</configSections>

<spring>
<context>
<resource uri="config://spring/objects"/>
</context>



<objects xmlns="http://www.springframework.net">
<object id="HelloWorldDAO" type="SpringHibernate.spring.HelloWorld" ></object>

<object id="form1" type="SpringHibernate.Form1">
<property name="HelloWorldDAO" ref="HelloWorldDAO" />
</object>


</objects>
...全文
621 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
m4dancer 2012-05-20
  • 打赏
  • 举报
回复
12 13楼对头。
ld1201 2010-06-20
  • 打赏
  • 举报
回复
原因是你的Form1类,不在spring.net托管范围中。
开发winform程序,正确的做法是在pragram.cs的main方法是IApplicationContext context = ContextRegistry.GetContext();。
然后 用context创建主窗体。

Form frm=(Form)context.GetObject("form1");
Application.run(frm);

rjh901 2010-06-13
  • 打赏
  • 举报
回复
由于你的Form对象在Program.cs文件中是用“Application.Run(new Form1());”语句直接实例化出来的,并没有让Spring来实例化Form对象,这样一来Spring无法实现HelloWorld对象的注入。当你IApplicationContext context = ContextRegistry.GetContext();
object o = context.GetObject("HelloWorldDAO");
用时,你是从spring容器中手动拿出了HelloWorldDAO对象,调用时自然不会出错。
你要得调用无误,就必须也让spring来实例化Form对象,以给Form对象注入HelloWorldDAO对象。

如你在Program.cs中如此写则不会出错(当然出需要配置Form1对象):
IApplicationContext ctx = ContextRegistry.GetContext();
Form1 springEntity = (Form1 )ctx.GetObject("Form1 ");
Application.Run(Form1);

Windows Form程序与web程序是有差别的,如想以操作web的方式操作Windows Form是不行的。
所以你必须给spring容器一个入口点。IApplicationContext ctx = ContextRegistry.GetContext()这个东西虽然有点烦,但要用的地方还是要写。
maoyongkang 2010-04-04
  • 打赏
  • 举报
回复
再顶一下,等待高手出现
maoyongkang 2010-03-31
  • 打赏
  • 举报
回复
难倒在winform中,不支持spring 属性注入吗?在asp.net 中支持的,期待哪位大虾能提供些信息!
huminghua 2010-03-30
  • 打赏
  • 举报
回复
那肯定会报错啊!你的没有值,如果你是放在不同的Form窗体的话至少也要实例化一下啊!
maoyongkang 2010-03-30
  • 打赏
  • 举报
回复
高手呢?我再顶一下!
yoyotongxue 2010-03-30
  • 打赏
  • 举报
回复
spring是什么哦 我记得是在Java方面的架构得嘛
学习了
验证码识别 2010-03-30
  • 打赏
  • 举报
回复
up up
maoyongkang 2010-03-30
  • 打赏
  • 举报
回复
自己顶一下!
maoyongkang 2010-03-30
  • 打赏
  • 举报
回复
2楼兄弟,能说的详细一点吗?
maoyongkang 2010-03-30
  • 打赏
  • 举报
回复
兄弟,我用了spring,依赖spring注入了,由spring复杂实例化了
//IApplicationContext context = ContextRegistry.GetContext();
//object o = context.GetObject("HelloWorldDAO");
//label1.Text = o.ToString();
这样就不报错了。不知道为啥spring没有注入呢,难倒配置不对吗?
cymandhxl 2010-03-30
  • 打赏
  • 举报
回复
good good study,day day up
ginni215 2010-03-30
  • 打赏
  • 举报
回复
似乎都没有委托给spring进行依赖注入~

110,536

社区成员

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

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

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