我应该在 class 库中的什么地方添加初始化代码?

Where do I add initialisation code in a class library?

我有一个使用 ValueInjecter 库的 class 库。在某些情况下,我需要创建自定义地图,但我不确定我需要在哪里调用 Mapper.AddMap()

如果我在具有主入口点的应用程序中使用它,我可以这样做:

public static void Main(string[] args)
{
    InitialiseMappings();
}

void InitialiseMappings()
{
    Mapper.AddMap<TypeA, TypeB>(src = > { 
        // Mapping code... 
    });

    Mapper.AddMap<TypeC, TypeD>(src = > { 
        // Mapping code... 
    });

    // etc.
}

在 class 库中,似乎没有直接的方法来 运行 'initialisation' 代码,所以我不确定如何处理这个问题。无法多次调用代码,因为尝试添加 duplicate/identical 映射会引发异常。

我应该把创建这些地图的代码放在哪里?

您可以将其添加到 static constructor

public class SomeClass {
    static SomeClass() {
        InitialiseMappings();
    }
}