0

使用 StructureMap 3.0.3.116 使用自定义 IRepository<,> 和 SharpRepository 初始化服务,structuremap 仍然无法使用默认约定找到具体类。

public interface IBlogImageRepository : IRepository<BlogImage,int>
{
}

public class BlogImageRepository : 
    ConfigurationBasedRepository<BlogImage, int>, IBlogImageRepository
{

错误:

没有注册默认实例,并且无法为类型“My.Assembly.Repositories.IBlogImageRepository”自动确定

    ObjectFactory.Initialize(x =>
    {
        x.Scan(scan =>
        {
            scan.Assembly("S3.Libs");
            scan.IncludeNamespace("S3.Libs.Repositories");
            scan.IncludeNamespace("S3.Libs.Services");
            scan.WithDefaultConventions();
            scan.ConnectImplementationsToTypesClosing(typeof (IRepository<,>));
        });
        x.Scan(scan =>
        {
            scan.TheCallingAssembly();
            scan.WithDefaultConventions();
        });
    });
4

2 回答 2

1

看起来我通过将 [DefaultConstructor] 属性添加到没有参数的构造函数来使其工作。它试图使用最贪婪的构造函数。

http://docs.structuremap.net/UsingAttributes.htm#section2

于 2014-06-13T18:35:54.000 回答
0

可能是它实际上是在尝试在 IBlogImagerepository 中创建 IRepository<,> 时抛出异常,而不是无法找到 IBlogImageRepository 接口本身。内部异常可能会提供更多细节。

我会尝试使用SharpRepository.Ioc.StructureMap NuGet 包,然后添加

x.ForRepositoriesUseSharpRepository();

到你的初始化方法,看看这是否有帮助。

于 2014-06-11T17:03:11.713 回答