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 に答える