Interface Ninject是否会处理一个不';它没有IDisposable';s接口,但在其上执行';什么是实施?
假设我有一个对象接口,该接口实现了Interface Ninject是否会处理一个不';它没有IDisposable';s接口,但在其上执行';什么是实施?,interface,ninject,idisposable,Interface,Ninject,Idisposable,假设我有一个对象接口,该接口实现了IDisposable,例如我在Entity Framework DbContext中使用的接口: public interface IMyContext : IDisposable { DbSet<TEntity> Set<TEntity>() where TEntity : class; DbSet Set(Type entityType); int SaveChanges(); IEnumerable
IDisposable
,例如我在Entity Framework DbContext中使用的接口:
public interface IMyContext : IDisposable
{
DbSet<TEntity> Set<TEntity>() where TEntity : class;
DbSet Set(Type entityType);
int SaveChanges();
IEnumerable<DbEntityValidationResult> GetValidationErrors();
DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity) where TEntity:class;
DbEntityEntry Entry(object entity);
}
如果我使用这个接口来解析DbContext,Ninject还能处理它吗
IE:Ninject是否检查正在解析的对象以检测IDisposable,即使它在接口上丢失?因此,您可以通过以下方式自行验证:
public interface IFoo { }
public class Foo : IDisposable
{
public void Dispose()
{
Console.WriteLine("got disposed");
}
}
var kernel = new StandardKernel();
kernel.Bind<IFoo>().To<Foo>().InSingletonScope();
kernel.Get<IFoo>();
kernel.Dispose();
公共接口IFoo{}
公共类Foo:IDisposable
{
公共空间处置()
{
控制台。WriteLine(“被处置”);
}
}
var kernel=新的标准内核();
kernel.Bind().To().InSingletonScope();
Get();
Dispose();
如果你能看到“被处置”。。好。。它被处理掉了。。如果不是。。没有!
当然,您可以用静态布尔标志等替换
控制台.WriteLine
是的。但你真的应该亲自尝试一下。或者查看ninject的源代码。IMyContext
不应实现IDisposable
。你这样做违反了法律。有关更多信息,请阅读。
public interface IFoo { }
public class Foo : IDisposable
{
public void Dispose()
{
Console.WriteLine("got disposed");
}
}
var kernel = new StandardKernel();
kernel.Bind<IFoo>().To<Foo>().InSingletonScope();
kernel.Get<IFoo>();
kernel.Dispose();