I m using PRISM and in the Bootstrapper class i did override the ConfigureContainer() method. There is nothing fancy in it just these lines:
protected override void ConfigureContainer()
{
Container.RegisterType<IDataContext, SQLDataContext>(new InjectionConstructor(@"Server=localhostSQLExpress;User Id=sa;Password=xxxxx;Database=MyDatabase"));
base.ConfigureContainer();
}
At "debug-time" i try to call Container.Resolve() but this gives me the following error:
{"Resolution of the dependency failed, type = "Photo.DAL.Abstract.IDataContext", name = "". Exception message is: The current build operation (build key Build Key[Photo.DAL.Concrete.SQLDataContext, null]) failed: Value cannot be null. Parameter name: stream (Strategy type BuildPlanStrategy, index 3)"} System.Exception {Microsoft.Practices.Unity.ResolutionFailedException}
But when i do
Container.IsTypeRegistered(typeof(IDataContext))
I get true!!!
- What am I missing???
Info which published as answer below, which should be an edit to the question:
This is the full stack:
Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type = "Photo.DAL.Abstract.IDataContext", name = "". Exception message is: The current build operation (build key Build Key[Photo.DAL.Concrete.SQLDataContext, null]) failed: Value cannot be null.
Parameter name: stream (Strategy type BuildPlanStrategy, index 3) ---> Microsoft.Practices.ObjectBuilder2.BuildFailedException: The current build operation (build key Build Key[Photo.DAL.Concrete.SQLDataContext, null]) failed: Value cannot be null.
Parameter name: stream (Strategy type BuildPlanStrategy, index 3) ---> System.ArgumentNullException: Value cannot be null.
Parameter name: stream
at System.Data.Linq.Mapping.XmlMappingSource.FromStream(Stream stream)
at Photo.DAL.Mapping.GetMapping() in C:UsersSavvasDocumentsVisual Studio 2008ProjectsPhotoPhoto.DALMapping.cs:line 18
at Photo.DAL.Concrete.SQLDataContext..ctor(String connectionString) in C:UsersSavvasDocumentsVisual Studio 2008ProjectsPhotoPhoto.DALConcreteSQLDataContext.cs:line 52
at BuildUp_Photo.DAL.Concrete.SQLDataContext(IBuilderContext )
at Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context)
at Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context)
at Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)
--- End of inner exception stack trace ---
at Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)
at Microsoft.Practices.ObjectBuilder2.Builder.BuildUp(IReadWriteLocator locator, ILifetimeContainer lifetime, IPolicyList policies, IStrategyChain strategies, Object buildKey, Object existing)
at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name)
--- End of inner exception stack trace ---
at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name)
at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, String name)
at Microsoft.Practices.Unity.UnityContainer.Resolve(Type t, String name)
at Microsoft.Practices.Unity.UnityContainerBase.Resolve(Type t)
at Microsoft.Practices.Unity.UnityContainerBase.Resolve[T]()
at Photo.Desktop.Bootstrapper.ConfigureContainer() in C:UsersSavvasDocumentsVisual Studio 2008ProjectsPhotoPhoto.DesktopBootstrapper.cs:line 42
I noticed that the error is not coming from actually resolving the class, but from the calling method GetMapping() which is defined as
public static class Mapping
{
public static XmlMappingSource GetMapping()
{
XmlMappingSource mapping;
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("Photo.DAL.Entities.Entities.map"))
{
mapping = XmlMappingSource.FromStream(stream);
}
return mapping;
}
}
- Is Unity incapable of doing this? (it worked well with Windsor!!)