标签: structuremap3

如何在结构图3中进行setter注入

我已经更新到structuremap 3,现在我不能使用FillAllPropertiesOfType进行setter注入.

它是否已被弃用,我应该使用什么呢?

c# structuremap dependency-injection ioc-container structuremap3

5
推荐指数
1
解决办法
2168
查看次数

Structuremap 3.0 EqualToAppSetting

我已升级到SM 3.0,现在,除了其他重大变化之外,我发现EqualToAppSetting已经消失.

我曾经能做到

  .Use<SomeType>().Ctor<SomeType>("connectionStr").EqualToAppSetting("myAppSetting");
Run Code Online (Sandbox Code Playgroud)

当然,myAppSetting从app.config或web.config中提取.

现在有人知道怎么做吗?或其他一些工作?

structuremap constructor arguments structuremap3

5
推荐指数
1
解决办法
544
查看次数

在 StructureMap 应用程序上使用 ANTS 分析器时,“操作可能会破坏运行时的稳定性”

我们最近升级了一个 web/mvc 应用程序以使用 StrucutreMap 3.0.4

现在,当尝试在“Line Level Timings, All Methods with Source”或更高级别使用 RedGate Ant 的分析器分析应用程序时,我们收到以下错误

Operation could destabilize the runtime.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Security.VerificationException: Operation could destabilize the runtime.

Source Error: 


Line 174:
Line 175:                            Initialise(context);
Line 176:                            ObjectFactory.Initialize(x => {     x.AddRegistry<BWebsiteIoc>(); });
Line 177:                        }
Line 178:                    }

Source …
Run Code Online (Sandbox Code Playgroud)

ants structuremap3

5
推荐指数
1
解决办法
995
查看次数

在DbContext中访问HttpContext.Current.User.Identity.Name

我将使用UserName来跟踪“创建”和“修改”字段。为此,我直接在DbContext中引用了System.Web程序集:

public void auditFields()
 {
            var auditDate = DateTime.Now;
            foreach (var entry in this.ChangeTracker.Entries<BaseEntity>())
            {
                switch (entry.State)
                {
                    case EntityState.Detached:
                        break;
                    case EntityState.Unchanged:
                        break;
                    case EntityState.Added:
                        entry.Entity.CreatedOn = auditDate;
                        entry.Entity.ModifiedOn = auditDate;
                        entry.Entity.CreatedBy = HttpContext.Current.User.Identity.Name ?? "anonymouse";
                        entry.Entity.ModifiedBy = HttpContext.Current.User.Identity.Name ?? "anonymouse";
                        break;
                    case EntityState.Deleted:
                        break;
                    case EntityState.Modified:
                        entry.Entity.ModifiedOn = auditDate;
                        entry.Entity.ModifiedBy = HttpContext.Current.User.Identity.Name ?? "anonymouse";
                        break;
                    default:
                        throw new ArgumentOutOfRangeException();
                }
            }
}
Run Code Online (Sandbox Code Playgroud)

它可以正常工作,但是将DbContext与HttpContext紧密结合在一起,如果我们将DbContext暴露在非Web环境中,这不是一个好主意。所以我用这种方式:

public class ApplicationDbContext :
        IdentityDbContext<ApplicationUser, CustomRole, int, CustomUserLogin, CustomUserRole, CustomUserClaim>,
        IUnitOfWork
{
    public ApplicationDbContext()
            : …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework dbcontext structuremap3

5
推荐指数
1
解决办法
2819
查看次数

构造函数依赖注入WebApi属性

我一直在寻找WebApi属性的非参数注入选项.

我的问题是使用Structuremap是否真的可以实现这一点?

我一直在谷歌搜索,但继续提出属性注入(我不喜欢使用)或假设的构造函数注入的实现,我到目前为止无法复制.

我选择的容器是Structuremap,但是任何这样的例子就足够了,因为我能够转换它.

有人管过这个吗?

structuremap dependency-injection custom-attributes asp.net-web-api structuremap3

4
推荐指数
1
解决办法
8197
查看次数

StructureMap ObjectFactory.TryGetInstance无法解析符号错误

我为StructureMap ObjectFactory.TryGetInstance得到"无法解决符号错误"

但ObjectFactory.GetInstance没问题.

StructureMap版本3.程序集包括"使用StructureMap;" 我在MVC 5项目中使用它.

错过任何其他包括?'

structuremap asp.net-mvc structuremap3

3
推荐指数
1
解决办法
2912
查看次数

使用StructureMap拦截3.*

我使用Castle.DynamicProxy和StructureMap 2.6 API进行了拦截,但现在无法使用StructureMap 3.0进行拦截.谁能帮我找到更新的文档甚至演示?我发现的一切似乎都与旧版本有关.例如StructureMap.Interceptors.TypeInterceptor接口等.

dependency-injection ioc-container inversion-of-control interception structuremap3

3
推荐指数
1
解决办法
2431
查看次数

无法解析StructureMap.Net4中的符号SetAllProperties

在我的项目中,我使用的是StructureMap.Net4(版本3.0.3)和StructureMap(3.0.3).我使用以下代码为Ioc配置了setter注入

public static IContainer Initialize()
        {

            ObjectFactory.Initialize(x =>
                        {





                            x.For<ICacheManager>().Use<MemmoryCacheManager>();
                            x.SetAllProperties(y => y.OfType<ICacheManager>);
                            //x.ForConcreteType<AuthorizationManager>()
                            //    .Configure.Setter<ICacheManager>(y => y.CacheManager)
                            //    .IsTheDefault();
                        });
            return ObjectFactory.Container;
        }
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误无法解析符号SetAllProperties.我已经引用了以下命名空间

using StructureMap;
using StructureMap.Graph;
Run Code Online (Sandbox Code Playgroud)

为什么我收到此错误?我怎么能解决这个问题?或者我应该引用任何其他命名空间

c# structuremap asp.net-mvc structuremap3

3
推荐指数
1
解决办法
1626
查看次数

StructureMap 3获取请求的类型

我有以下在版本2.6.4中工作的StructureMap注册,我最终升级到最新的SM(撰写本文时为3.1.2).并且需要更新它,因为似乎不再有IContext.BuildStack.

这是2.6.4的旧版本:

        initialization.For(typeof(IRepository<,>))
                             .Use(context =>
                             {
                                 var genericArgs = context.BuildStack.Current.RequestedType.GetGenericArguments();

                                 return RepositoryFactory.GetInstance(genericArgs[0], genericArgs[1], repositoryName);
                             }
            );
Run Code Online (Sandbox Code Playgroud)

所以我认为将其更改为可行:

        initialization.For(typeof (IRepository<,>))
            .Use("IRepository<,>", context =>
                                   {
                                       var genericArgs = context.ParentType.GetGenericArguments();

                                       return RepositoryFactory.GetInstance(genericArgs[0], genericArgs[1],
                                           repositoryName);
                                   }
            );
Run Code Online (Sandbox Code Playgroud)

但context.ParentType为null.当我查看context.RootType时,它被设置为System.Object,这显然不是我想要的.

我获取此存储库实例的测试代码是:

var userRepository = ObjectFactory.GetInstance<IRepository<User, Guid>>();
Run Code Online (Sandbox Code Playgroud)

我没有看到任何其他财产有这些信息,但我猜我错过了什么.

structuremap structuremap3

3
推荐指数
1
解决办法
533
查看次数

StructureMap:当前上下文中不存在名称“ObjectFactory”

我正在使用 StructureMap 来解决依赖关系,这在旧版本中运行良好。但是在更新 StructureMap 版本 4.2.0.40 后,我遇到了这个错误。

ObjectFactory 现在在新版本中已过时。 那么如何修改以下逻辑以适应更新版本。

protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
        {
            try
            {
                if ((requestContext == null) || (controllerType == null))
                    return null;

                return (Controller)ObjectFactory.GetInstance(controllerType);
            }
            catch (StructureMapException)
            {
                System.Diagnostics.Debug.WriteLine(ObjectFactory.WhatDoIHave());
                throw new Exception(ObjectFactory.WhatDoIHave());
            }
        }
Run Code Online (Sandbox Code Playgroud)

引导程序

public static class Bootstrapper
    {
        public static void Run()
        {
            ControllerBuilder.Current
                .SetControllerFactory(new StructureMapControllerFactory());

            ObjectFactory.Initialize(x =>
            {
                x.AddConfigurationFromXmlFile(@"D:\Samples\Web_API\OneCode\StructureMap.Web\StructureMap.Web\StructureMap.xml");
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

structuremap asp.net-mvc asp.net-mvc-4 structuremap3 structuremap4

3
推荐指数
1
解决办法
3173
查看次数