Tag: dependency injection

使用静态记录器,静态助手类进行dependency injection

我有一个静态类,它调用静态Logger类, 例如 static class DoesStuffStatic { public static void DoStuff() { try { //something } catch(Exception e) { //do stuff; Logger.Log(e); } } } static class Logger { public static void Log(Exception e) { //do stuff here } } 如何将Logger注入我的静态类? 注意:我已经通过示例阅读了.NET中的dependency injection? ,但这似乎使用实例记录器。

如何使用Castle Windsor注册通用装饰器?

我需要使用相应的DeadlockRetryCommandHandlerDecorator类型基于ICommandHandler类型来装饰所有类型 我试过这个解决方案,但遗憾的是它不起作用。 container.Register( Component.For(typeof(ICommandHandler)) .ImplementedBy(typeof(DeadlockRetryCommandHandlerDecorator))); container.Register( AllTypes.FromThisAssembly() .BasedOn(typeof(ICommandHandler)) .WithService.Base()); 如何注册通用装饰器( DeadlockRetryCommandHandlerDecorator )来包装所有通用ICommandHandler实现?

从StructureMap获取的HttpContext上的Null User

好吧,我之前的问题/设置有太多的变量,所以我把它剥离到它的裸骨组件。 给出下面的代码使用StructureMap3 … //IoC setup For().UseSpecial(x => x.ConstructedBy(y => HttpContext.Current != null ? new HttpContextWrapper(HttpContext.Current) : null )); For().Use(); //Classes used public class CurrentUser : ICurrentUser { public CurrentUser(HttpContextBase httpContext) { if (httpContext == null) return; if (httpContext.User == null) return; var user = httpContext.User; if (!user.Identity.IsAuthenticated) return; UserId = httpContext.User.GetIdentityId().GetValueOrDefault(); UserName = httpContext.User.Identity.Name; } […]

如何将ASP.NET 5(vNext)用户机密注入我自己的实用程序类?

我已经用过了: user-secret set “AWSAccessKey” “my access key”和 user-secret set “”AWSSecretKey” “my secret key” 让我的钥匙进入秘密商店。 我有这个课程,我将用它来通过Amazon SES发送电子邮件,但我不知道如何将我的密钥插入其中。 public class MailHelper { public void SendEmailSes(string senderAddress, string receiverAddress, string subject, string body) { using (var client = new AmazonSimpleEmailServiceClient( new BasicAWSCredentials(“[AWSAccessKey]”, “[AWSSecretKey]”), RegionEndpoint.USEast1)) { var sendRequest = new SendEmailRequest { Source = senderAddress, Destination = new Destination […]

IFilter提供者和关注点分离

我有一种情况需要在动作filter中注入一些依赖项,即我的自定义授权属性中的自定义授权提供程序。 我偶然发现了许多人和post,他们说我们应该将“属性元数据”与“行为”分开。 这是有道理的,并且还有一个事实是filter属性没有通过’DependencyResolver’实例化,因此很难注入依赖项。 所以我对我的代码进行了一些重构,我想知道我是否正确(我使用Castle Windsor作为DI框架)。 首先,我剥离了我的属性,只包含我需要的原始数据 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] public class MyAuthorizeAttribute : Attribute { public string Code { get; set; } } 我创建了一个自定义授权filter,其中包含确定当前用户是否具有适当授权的逻辑 public class MyAuthorizationFilter : IAuthorizationFilter { private IAuthorizationProvider _authorizationProvider; private string _code; public MyAuthorizationFilter(IAuthorizationProvider authorizationProvider, string code) { Contract.Requires(authorizationProvider != null); Contract.Requires(!string.IsNullOrWhiteSpace(code)); _authorizationProvider = authorizationProvider; _code = code; } public void […]

为ASP.NET身份配置Unity DI

我正在成功地使用Unity进行所有常规构造函数注入,例如存储库等,但我无法使用ASP.NET Identity类。 设置是这样的: public class AccountController : ApiController { private UserManager _userManager { get; set; } public AccountController(UserManager userManager) { if (userManager == null) { throw new ArgumentNullException(“userManager”); } _userManager = userManager; } // … } 使用Unity的这些配置: unity.RegisterType(); unity.RegisterType<UserManager>(new HierarchicalLifetimeManager()); unity.RegisterType<IUserStore, UserStore>(new HierarchicalLifetimeManager()); 这与Autofac,Ninject的其他post相同,例如,但在我的情况下它不起作用。 错误消息是: 尝试创建“AccountController”类型的控制器时发生错误。 确保控制器具有无参数的公共构造函数。 手动创作当然是: public AccountController() : this(new UserManager(new UserStore(“Mongo”))) { […]

dependency injectionwcf

我想在WCF中注入我的接口的实现,但我想在WCF的客户端初始化我的容器的dependency injection。 所以我可以为我的服务的每个客户端提供不同的实现。

IDependencyResolver是反模式吗?

我正在为遗留的ASP.NET应用程序设计一些体系结构更改。 我为一些模拟ASP.NET MVC的IDependencyResolver的依赖解析的类原型。 我不会发布,因为它几乎是相同的界面,但用其他自然语言。 我发现它可能被认为是服务位置,反过来通常(在某些情况下不完全)被谴责依赖于dependency injection。 不过,我找不到任何反对使用ASP.NET MVC的依赖项解析实现的建议。 ASP.NET MVC的IDependencyResolver是否被视为反模式? 这是件坏事吗?

dependency injection – 几个类方法中需要的新实例

我有一些看起来像这样的代码: public MyService(IDependency dependency) { _dependency = dependency; } public Message Method1() { _dependency.DoSomething(); } public Message Method2() { _dependency.DoSomething(); } public Message Method2() { _dependency.DoSomething(); } 现在我刚刚意识到,因为依赖对象包含内部状态信息。 我需要在每个方法调用中新建一个新实例 那么,最好的方法是什么,仍然没有新的具体实例? 您是否会使用IoC容器并在每个方法中调用容器? 或者是否有一种更流畅的方式,您只能拨打一个容器? 如果我没有使用IoC容器怎么办?是否有办法不在每个方法中新建一个具体的实例?

dependency injection统一 – 条件解析

有条件的解决是我目前还不了解的最后一件事。 让我们说我们有一个接口IAuthenticate : public interface IAuthenticate{ bool Login(string user, string pass); } 现在我有两种类型的身份validation。 Twitter认证 public class TwitterAuth : IAuthenticate { bool Login(string user, string pass) { //connect to twitter api } } Facebook Auth public class FacebookAuth: IAuthenticate { bool Login(string user, string pass) { //connect to fb api } } 在unity配置中注册类型: unityContainer.RegisterType(); unityContainer.RegisterType(); 在我们的控制器中通过DI注入对象: […]