我希望structmap能够扫描我的程序集并将类注册为单例。 我进一步将此限制为工厂,服务等。
然而,目前的挑战是将找到的注册标记为单身。
我发现一种方式是通过惯例。
我找到了一个将单个特定注册标记为单身的示例,但我想对所有注册执行此操作。
示例代码无法编译;首先是因为IsConcrete等不可用。
有没有人有前进的方向?
using StructureMap;
using StructureMap.Configuration.DSL;
using StructureMap.Graph;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
namespace planner_gui
{
public class SingletonConvention : IRegistrationConvention
{
public void Process(Type t, Registry registry)
{
if (!(t.IsConcrete()) || !(t.CanBeCreated()) ) return;
registry.For( ... ).Singleton().Use(t);
}
}
public class GuiRegistry : Registry
{
public GuiRegistry()
{
Scan(x =>
{
x.AssemblyContainingType<IExecutionContext>();
x.With(new SingletonConvention());
});
}
}
}
答案 0 :(得分:0)
IsConcrete()方法是StructureMap.TypeRules命名空间中的扩展方法,因此添加
using StructureMap.TypeRules
会做到这一点。