2017-07-28 4 views
0

Ich verwende StructureMap in meinem Projekt für die Verwendung von DepencyInjection. Ich habe 5 Projekt in meiner Lösung.show Methodenname erwartet bei Verwendung von StructureMap

Ich habe IUnitOfWork Schnittstelle in DAL und ich Defnation Funktion von IUnitOfWork in 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>(); 
    } 

. 
. 
. 

wenn ich jetzt IUnitOfWork in Hauptprojekt registrieren möchten:

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

es zeigt mir diesen Fehler:

Severity-Code Descri ption Projektdatei Zeilenunterdrückungszustand Fehler CS0149 Methodenname erwartet BimehKosarFinal E: \ myproject \ BimehKosarFinal \ BimehKosarFinal \ StructureMap \ StructureMapDefnation.cs 28 Aktive

in dieser Zeile:

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

was ist das Problem ? Wie kann ich dieses Problem lösen?

Antwort

1

die letzte (), entfernen und schreiben

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

Oder

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