【问题标题】:show Method name expected when using StructureMap显示使用 StructureMap 时需要的方法名称
【发布时间】:2017-07-28 15:56:01
【问题描述】:

我在我的项目中使用 StructureMap 来使用 DepencyInjection 。我的解决方案中有 5 个项目。

我在DAL 中有IUnitOfWork 接口,在ApplicationDbContext 中有IUnitOfWork 的定义函数。

ApplicationDbContext:

public class ApplicationDbContext : DbContext, IUnitOfWork
{
    public ApplicationDbContext()
        : base("ApplicationDBContext")
    {
    }

    public virtual DbSet<User> Users { get; set; }
    public void ForceDatabaseInitialize()
    {
        Database.Initialize(true);
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();
    }
    #region IUnitOfWork Members

    public void MarkAsDeleted<TEntity>(TEntity entity) where TEntity : class
    {
        Entry(entity).State = EntityState.Deleted;
    }
    public new IDbSet<TEntity> Set<TEntity>() where TEntity : class
    {
        return base.Set<TEntity>();
    }

.
.
.

现在我想在主项目中注册IUnitOfWork

 public static class StructureMapDefnation
{
    private static readonly Lazy<Container> _containerBuilder =
        new Lazy<Container>(defaultContainer, LazyThreadSafetyMode.ExecutionAndPublication);
    public static IContainer Container
    {
        get { return _containerBuilder.Value; }
    }
    private static Container defaultContainer()
    {
        var container = new Container(ioc =>
        {
            // map same interface to different concrete classes
            ioc.For<IUser>().Use<EfUserService>();
            ioc.For<IUnitOfWork>().Use(() => new ApplicationDbContext())();
        });
        container.AssertConfigurationIsValid();

        return container;
    }
}

它告诉我这个错误:

严重性代码描述项目文件行抑制状态 错误 CS0149 方法名称应为 BimehKosarFinal E:\myproject\BimehKosarFinal\BimehKosarFinal\StructureMap\StructureMapDefnation.cs 28 活动

在这一行:

ioc.For<IUnitOfWork>().Use(() => new ApplicationDbContext())();

有什么问题?我该如何解决这个问题?

【问题讨论】:

    标签: c# structuremap structuremap4


    【解决方案1】:

    去掉最后一个(),写

    ioc.For<IUnitOfWork>().Use(() => new ApplicationDbContext());
    

    或者

    ioc.For<IUnitOfWork>().Use<ApplicationDbContext>();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 2014-08-07
      相关资源
      最近更新 更多