1
public class RepositoryRegistry : Registry
    {
        public RepositoryRegistry()
        {
            Scan(x =>
            {
                x.Assembly("MyApp.Data");
                x.TheCallingAssembly();
                x.WithDefaultConventions();                
                x.AddAllTypesOf(typeof(ILookupRepo<>));                      
            });

            var tmp = ObjectFactory.GetInstance<ILookupRepo<User>>();

            Debug.WriteLine(ObjectFactory.WhatDoIHave());
        }
    }

收到此错误:

{"StructureMap Exception Code:  202 No Default Instance defined for PluginFamily MyApp.Data.Repositories.Lookup.ILookupRepo`1[[MyApp.Data.Context.User, MyApp.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], TolMobile.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"}

StructureMap 似乎无法解决IAnything<T>。有什么理由会停止工作吗?我以完全相同的方式在另一个项目中使用了它,它解决了。唯一的区别是我现在使用的 StructureMap 版本更新...

4

1 回答 1

0

这不是 StructureMap 问题 - 没有类型继承自ILookupRepo<>.

这是一个开放的泛型类型,而不是基本类型!如果你想找到关闭的类型ILookupRepo<>,那么你需要像这样扫描:

Scan(x =>
{
    x.Assembly("MyApp.Data");
    x.TheCallingAssembly();
    x.WithDefaultConventions();                
    x.ConnectImplementationsToTypesClosing(typeof(ILookupRepo<>));
});

有一篇关于该主题的博客文章。

于 2012-12-29T00:04:42.383 回答