2017-07-28 2 views
0

J'utilise StructureMap dans mon projet pour utiliser DepencyInjection. J'ai 5 projet dans ma solution.show Nom de la méthode attendu lors de l'utilisation de StructureMap

Je l'interface IUnitOfWork dans DAL et je Defnation Fonction de IUnitOfWork dans ApplicationDbContext.

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>(); 
    } 

. 
. 
. 

maintenant quand je veux enregistrer IUnitOfWork dans le projet principal:

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; 
    } 
} 

il me montrer cette erreur:

gravité code Descri Suppression fichier de projet ption State Line Erreur CS0149 Nom de la méthode prévue BimehKosarFinal E: \ MyProject \ BimehKosarFinal \ BimehKosarFinal \ StructureMap \ StructureMapDefnation.cs 28 active

dans cette ligne:

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

quel est le problème ? Comment puis-je résoudre ce problème ?

Répondre

1

supprimer le dernier () et écrire

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

Ou

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