C# 结构图扫描

C# 结构图扫描,c#,structuremap,C#,Structuremap,我正在处理的一个项目使用StructureMap。我们有这样一个代码段: Scan(x => { try { x.Convention<SqlTypesConvention>(); x.Assembly("ASSEMBLY NAME HERE"); } catch { } }); internal class SqlTypesConvention : IRegistrationConvention

我正在处理的一个项目使用StructureMap。我们有这样一个代码段:

Scan(x =>
{
    try
    {
        x.Convention<SqlTypesConvention>();
        x.Assembly("ASSEMBLY NAME HERE");
    }
    catch
    {
    }
});

internal class SqlTypesConvention : IRegistrationConvention
{
    #region IRegistrationConvention Members

    public void Process(Type type, Registry registry)
    {
        string interfaceName = "I" + type.Name + "Data";
        Type interfaceType = type.GetInterface(interfaceName);

        if (type.IsAbstract || !type.IsClass || interfaceType.IsNullRef())
        {
            return;
        }
        registry.AddType(interfaceType, type);
    }

    #endregion IRegistrationConvention Members
}
扫描(x=>
{
尝试
{
x、 公约();
x、 大会(“大会名称在此”);
}
抓住
{
}
});
内部类SqlTypesConversion:iRegistrationConversion
{
#地区I注册大会成员
公共作废进程(类型、注册表)
{
字符串interfaceName=“I”+type.Name+“Data”;
类型interfaceType=Type.GetInterface(interfaceName);
if(type.isastract | | |!type.IsClass | | | interfaceType.IsNullRef())
{
返回;
}
registry.AddType(interfaceType,type);
}
#endregion IRegistrationConvention成员
}

此扫描和约定代码的作用是什么?

Foo
的接口通常命名为
IFoo
。因此,惯例是在类名前面加上
I

代码示例中的约定是,对于给定的类
Foo
,其接口将命名为
IFooData


StructureMap将使用此约定尝试查找所有类型的接口关系。因此,当类构造函数要求提供
IFooData
StructureMap时,它将能够提供
Foo
的实例,并且类
Foo
的接口通常被命名为
IFoo
。因此,惯例是在类名前面加上
I

代码示例中的约定是,对于给定的类
Foo
,其接口将命名为
IFooData


StructureMap将使用此约定尝试查找所有类型的接口关系。因此,当类构造函数要求提供
IFooData
StructureMap时,它将能够提供
Foo

的实例。如果有任何类“XXX”使用以“I”开头的接口“IXXX”,那么结构图将扫描“xxxx”类的所有程序集并自动实例化。有关结构映射如何工作的详细信息可用@

如果有任何类“XXX”使用以“I”开头的接口“IXXX”,则结构映射将扫描“xxxx”类的所有程序集并自动实例化。有关结构图工作原理的详细信息可供查阅。@

@AhmedKRAIEM LOL.。我已经阅读了官方网站上的结构图文档,但仍然无法理解惯例的内容。。这就是为什么我在这里发布了这个问题,希望有人能用简单的话来解释。@AhmedKRAIEM LOL.。我已经阅读了StructureMap是官方网站上的文档,但仍然无法理解约定的内容。这就是为什么我在这里发布了这个问题,希望有人能用简单的话来解释这一点。