- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个带有许多自定义服务器控件的 ASP.Net Web 应用程序。
不幸的是,Ninject could not inject dependency into CompositeControls .
我是 Ninject 的新手;以下是我解决问题的简单方法。
因为我有很多自定义服务器控件,所以我最终会创建多个 StandardKernel 实例。
这是一个糟糕的设计吗? 如有错误请指正。谢谢!
public interface ICalculate
{
int Add(int x, int y);
}
public class Calculate : ICalculate
{
public int Add(int x, int y)
{
return x + y;
}
}
public class DemoModule : NinjectModule
{
public override void Load()
{
Bind<ICalculate>().To<Calculate>();
}
}
public class MyServerControl : CompositeControl
{
private TextBox TextBox1;
private TextBox TextBox2;
private Label Label1;
public ICalculate Calculate { get; set; }
public MyServerControl()
{
IKernel kernel = new StandardKernel(new DemoModule());
Calculate = kernel.Get<ICalculate>();
}
protected override void CreateChildControls()
{
TextBox1 = new TextBox{ID = "TextBox1", Text = "1"};
Controls.Add(TextBox1);
TextBox2 = new TextBox {ID = "TextBox2", Text = "2"};
Controls.Add(TextBox2);
var button1 = new Button {ID = "Button1", Text = "Calculate"};
button1.Click += button1_Click;
Controls.Add(button1);
Label1 = new Label {ID = "Label1"};
Controls.Add(Label1);
}
private void button1_Click(object sender, EventArgs e)
{
int value1 = Int32.Parse(TextBox1.Text);
int value2 = Int32.Parse(TextBox2.Text);
Label1.Text = "Result:" + Calculate.Add(value1,value2);
}
}
最佳答案
是的,创建 Ninject 内核的多个实例是不好的做法,因为创建和配置 Ninject 内核是一项非常昂贵的操作。在您的情况下,每次创建新控件时都会发生这种情况。
我认为,最好将 IKernel
设为静态字段,并将其用作 CompositeControl
中的 Service Locator
模式
UPD:它还不错,但它确实有效。
public class Global : NinjectHttpApplication
{
public static IKernel Kernel;
protected override IKernel CreateKernel()
{
IKernel kernel = new StandardKernel(new DemoModule());
return kernel;
}
}
public class MyServerControl : CompositeControl
{
public ICalculate Calculate { get; set; }
public MyServerControl()
{
Calculate = Global.Kernel.Get<ICalculate>(); // like service locator
}
}
关于c# - 在 Ninject 中创建多个内核实例是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19774962/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!