Ninject Window 表单中的实现 - C#
Ninject implementation in Window Forms - C#
我正在使用 Window Forms C# Ninject 版本:2.0.0.1
首先安装了 Ninject 软件包:ninject.extensions.infrastructure.winforms
其次,我使用以下代码创建了新的 class。
public class CustomModule : NinjectModule
{
public override void Load()
{
Bind<IDAL.IORDR>().To<DAL.DAL_ORDR>();
}
}
我在下面做的window表格中的第三个
public partial class SODetails : Form
{
public IORDR _IORDR { get; set; }
[Inject]
public SODetails(IORDR ORDR)
{
_IORDR = ORDR;
}
public SODetails()
{
InitializeComponent();
}
}
最后在Program.cs,我做了下面的代码
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var kernel = new StandardKernel(new CustomModule());
var form = kernel.Get<SODetails>();
Application.Run(form);
}
尽管我能够成功注入依赖项,但表单未显示任何控件。我是否以错误的方式执行 Ninject 实施?
我看到了问题。
所以您的 SODetails 表单已启动并且 运行 但它没有显示您在设计器中添加的任何控件。我是对的吗?
问题是未调用 InitializeComponent()。
请更改代码,以便调用默认构造函数,一切正常。
我对构造函数链接的代码做了一个小改动 public SODetails(IORDR ORDR) : this()
{....}
public IORDR _IORDR { get; set; }
[Inject]
public SODetails(IORDR ORDR) : this()
{
_IORDR = ORDR;
}
public SODetails()
{
InitializeComponent();
}
public IORDR _IORDR { get; set; }
[Inject]
public SODetails(IORDR ORDR) : this()
{
_IORDR = ORDR;
}
public SODetails()
{
InitializeComponent();
}
我更改了以下代码
public partial class SODetails : Form
{
public IORDR _IORDR { get; set; }
[Inject]
public SODetails(IORDR ORDR)
{
_IORDR = ORDR;
}
public SODetails()
{
InitializeComponent();
}
}
至
public partial class SODetails : Form
{
public IORDR _IORDR { get; set; }
[Inject]
public SODetails(IORDR ORDR)
{
_IORDR = ORDR;
InitializeComponent();
}
public SODetails()
{
InitializeComponent();
}
}
我正在使用 Window Forms C# Ninject 版本:2.0.0.1
首先安装了 Ninject 软件包:ninject.extensions.infrastructure.winforms
其次,我使用以下代码创建了新的 class。
public class CustomModule : NinjectModule
{
public override void Load()
{
Bind<IDAL.IORDR>().To<DAL.DAL_ORDR>();
}
}
我在下面做的window表格中的第三个
public partial class SODetails : Form
{
public IORDR _IORDR { get; set; }
[Inject]
public SODetails(IORDR ORDR)
{
_IORDR = ORDR;
}
public SODetails()
{
InitializeComponent();
}
}
最后在Program.cs,我做了下面的代码
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var kernel = new StandardKernel(new CustomModule());
var form = kernel.Get<SODetails>();
Application.Run(form);
}
尽管我能够成功注入依赖项,但表单未显示任何控件。我是否以错误的方式执行 Ninject 实施?
我看到了问题。
所以您的 SODetails 表单已启动并且 运行 但它没有显示您在设计器中添加的任何控件。我是对的吗?
问题是未调用 InitializeComponent()。
请更改代码,以便调用默认构造函数,一切正常。 我对构造函数链接的代码做了一个小改动 public SODetails(IORDR ORDR) : this() {....}
public IORDR _IORDR { get; set; }
[Inject]
public SODetails(IORDR ORDR) : this()
{
_IORDR = ORDR;
}
public SODetails()
{
InitializeComponent();
}
public IORDR _IORDR { get; set; }
[Inject]
public SODetails(IORDR ORDR) : this()
{
_IORDR = ORDR;
}
public SODetails()
{
InitializeComponent();
}
我更改了以下代码
public partial class SODetails : Form
{
public IORDR _IORDR { get; set; }
[Inject]
public SODetails(IORDR ORDR)
{
_IORDR = ORDR;
}
public SODetails()
{
InitializeComponent();
}
}
至
public partial class SODetails : Form
{
public IORDR _IORDR { get; set; }
[Inject]
public SODetails(IORDR ORDR)
{
_IORDR = ORDR;
InitializeComponent();
}
public SODetails()
{
InitializeComponent();
}
}