我正在尝试使用MVC 3中的ninject将存储库注入自定义成员资格提供程序.
在MembershipProvider中,我尝试了以下内容:
[Inject]
public ICustomerRepository _customerRepository{ get; set; }
Run Code Online (Sandbox Code Playgroud)
和
[Inject]
public TUMembershipProvider(ICustomerRepository customerRepository)
{
_customerRepository = customerRepository;
}
Run Code Online (Sandbox Code Playgroud)
在我的ninject模块中,我尝试了以下方法:
Bind<MembershipProvider>().ToConstant(Membership.Provider);
Run Code Online (Sandbox Code Playgroud)
以上都不是.
当我使用(在global.asa)
kernel.Inject(Membership.Provider);
Run Code Online (Sandbox Code Playgroud)
和...一起
[Inject]
public ICustomerRepository _customerRepository{ get; set; }
Run Code Online (Sandbox Code Playgroud)
它有效,但我没有生命周期管理,这将导致NHibernate的"ISession is open"错误,因为ISession是InRequestScope而存储库不是.
我需要垂直文本或只是在ITextSharp中旋转ColumnText的方法.
(它需要绝对的位置)
直到现在我已经尝试了很多不同的解决方案,但没有运气.
这是几次尝试:
1.
_cb.SetFontAndSize(BaseFont.CreateFont(), 12f);
_cb.ShowTextAligned(Element.ALIGN_CENTER, "Hello World", 50, 50, 90);
Run Code Online (Sandbox Code Playgroud)
2.
var vt = new VerticalText(_cb);
vt.SetVerticalLayout(50, 50, 400, 8, 30);
vt.AddText(new Chunk("asdasd",_sf.ChildBackPageTextOneFont()));
vt.Go();
Run Code Online (Sandbox Code Playgroud)
3.
System.Drawing.Drawing2D.Matrix foo = new System.Drawing.Drawing2D.Matrix();
foo.Rotate(90);
_cb.ConcatCTM(foo);
Run Code Online (Sandbox Code Playgroud)
我也尝试用System.Drawing.Graphics绘制它,但质量非常差.
有解决方案吗 谢谢.
我正在使用ASP.NET MVC 3和Ninject以及NHibernate.
在考虑DI时,我认为获得资源的人也确保关闭它(在这种情况下,Ninject应该负责)
但是我不确定使用InRequestScope时Ninject是如何工作的.
我的代码是:
Bind<ISession>().ToMethod(context => context.Kernel.Get<ISessionFactory>().OpenSession()).InRequestScope();
Run Code Online (Sandbox Code Playgroud)
我打开一个会话并把它放在I InRequestScope中,但是当Ninject超出请求范围时,Ninject会关闭我的ISession吗?