所以我遇到了有关Android内存性能的最佳实践。 http://developer.android.com/training/articles/memory.html 他们说 避免dependency injection框架 使用Guice或RoboGuice等dependency injection框架可能会很有吸引力,因为它们可以简化您编写的代码,并提供适用于testing和其他configuration更改的自适应环境。 但是,这些框架往往会通过扫描代码来进行注释,从而执行大量的stream程初始化,即使您不需要,也可能需要将大量的代码映射到RAM中。 这些映射的页面被分配到干净的内存中,所以Android可以放弃它们,但是直到页面被长时间留在内存中才会发生。 但是他们自称是匕首的匕首呢? 不知道我应该去哪一个?
我正在使用本地存储在TypeScript中编写一个Angular2服务。 我想将浏览器窗口对象的引用注入到我的服务中,因为我不想引用任何全局variables。 像angular1.x $window 。 我怎么做?
我正在开始一个新的桌面应用程序,我想用MVVM和WPF来构build它。 我也打算使用TDD。 问题是,我不知道如何使用IoC容器将我的dependency injection到我的生产代码中。 假设我有以下的类和接口: public interface IStorage { bool SaveFile(string content); } public class Storage : IStorage { public bool SaveFile(string content){ // Saves the file using StreamWriter } } 然后我有另一个有IStorage作为依赖的类,假设这个类是一个ViewModel或一个业务类… public class SomeViewModel { private IStorage _storage; public SomeViewModel(IStorage storage){ _storage = storage; } } 有了这个,我可以轻松地编写unit testing,以确保它们正常工作,使用模拟等。 问题是在真正的应用程序中使用它。 我知道我必须有一个链接IStorage接口的默认实现的IoC容器,但我该怎么做呢? 例如,如果我有以下xaml,将会如何呢? <Window … xmlns […]
是否有一个与Google Guice相媲美的DI框架? Google使用什么?
我需要注入两个对象到ImageService 。 其中之一是Repository/ImageRepository一个实例,我得到这样的: $image_repository = $container->get('doctrine.odm.mongodb') ->getRepository('MycompanyMainBundle:Image'); 那么如何在我的services.yml中声明呢? 这是服务: namespace Mycompany\MainBundle\Service\Image; use Doctrine\ODM\MongoDB\DocumentRepository; class ImageManager { private $manipulator; private $repository; public function __construct(ImageManipulatorInterface $manipulator, DocumentRepository $repository) { $this->manipulator = $manipulator; $this->repository = $repository; } public function findAll() { return $this->repository->findAll(); } public function createThumbnail(ImageInterface $image) { return $this->manipulator->resize($image->source(), 300, 200); } }
我有兴趣进一步了解人们如何使用dependency injection平台来注入日志。 尽pipe下面的链接和我的示例都提到了log4net和Unity,但我不一定会使用这两者中的任何一个。 对于dependency injection/ IOC,我可能会使用MEF,因为这是项目其他部分(大)正在解决的标准。 我对dependency injection/ ioc非常陌生,对于C#和.NET来说很新颖(在VC6和VB6的过去10多年中,在C#/ .NET中写了很less的生产代码)。 我已经做了很多调查,在那里的各种日志logging解决scheme,所以我认为我有一个体面的处理他们的function集。 我只是不太熟悉,用实际的机制来获得一个dependency injection(或者,也许更“正确”,得到一个注入的dependency injection的抽象版本)。 我已经看到其他与日志和/或dependency injection相关的post,如: dependency injection和日志接口 logging最佳实践 Log4Net Wrapper类是什么样的? 再次关于log4net和Unity IOCconfiguration 我的问题没有具体与“如何使用ioc工具yyy注入日志logging平台xxx”? 相反,我感兴趣的是人们如何处理包装日志平台(通常,但并不总是推荐)和configuration(即app.config)。 例如,以log4net为例,我可以configuration(在app.config中)一些logging器,然后以这样的代码的标准方式获得这些logging器(没有dependency injection): private static readonly ILog logger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 另外,如果我的logging器不是为一个类命名的,而是一个function区域,我可以这样做: private static readonly ILog logger = LogManager.GetLogger("Login"); private static readonly ILog logger = LogManager.GetLogger("Query"); private static readonly ILog logger = […]
这是设置。 假设我有一些需要服务实例的动作filter: public interface IMyService { void DoSomething(); } public class MyService : IMyService { public void DoSomething(){} } 然后我有一个ActionFilter需要一个该服务的实例: public class MyActionFilter : ActionFilterAttribute { private IMyService _myService; // <— How do we get this injected public override void OnActionExecuting(ActionExecutingContext filterContext) { _myService.DoSomething(); base.OnActionExecuting(filterContext); } } 在MVC 1/2注入依赖到行动filter是屁股有点痛苦。 最常见的方法是使用自定义操作调用程序,可以在这里看到: http : //www.jeremyskinner.co.uk/2008/11/08/dependency-injection-with-aspnet-mvc-action-filters/这个解决方法背后的主要动机是因为下面的方法被认为是容易和紧密耦合的容器: public class […]
比方说,我有一个模块: Module extends AbstractModule { @Override protected void configure() { bind(String.class). annotatedWith(Names.named("annotation")). toInstance("DELIRIOUS"); } } 我想testing模块,并检查它是否注入了Names.named("annotation")注释的String字段中的正确值,而没有类和字段,但直接从注入器获取值: @Test public void test() { Injector injector = Guice.createInjector(new Module()); // THIS IS NOT GOING TO WORK! String delirious = injector.getInstance(String.class); assertThat(delirious, IsEqual.equalTo("DELIRIOUS"); }
我还在开始学习除了java之外的scala,我没有得到它应该如何做DI? 可以或应该使用现有的DI库,是否应该手动完成还是有其他方法?
当被问及Scala中的dependency injection问题时,很多答案都指向了使用Reader Monad的方法,无论是来自Scalaz还是自己的方法。 有很多非常清晰的文章描述了这种方法的基础(例如Runar的谈话 , Jason的博客 ),但是我没有设法find一个更完整的例子,我没有看到这个方法的优点,比如更多传统的“手动”DI(参见我写的指南 )。 很可能我错过了一些重要的观点,因此是一个问题。 举一个例子,让我们想象我们有这些类: trait Datastore { def runQuery(query: String): List[String] } trait EmailServer { def sendEmail(to: String, content: String): Unit } class FindUsers(datastore: Datastore) { def inactive(): Unit = () } class UserReminder(findUser: FindUsers, emailServer: EmailServer) { def emailInactive(): Unit = () } class CustomerRelations(userReminder: UserReminder) { def […]