Automapper可以用在控制台应用程序中吗?

时间:2011-07-18 14:41:47

标签: c# .net console-application automapper

是否可以在控制台应用程序中使用automapper

它的Getting Started Page建议从应用程序启动时调用bootstrapper类,但是没有关于要从Main()添加和调用的类的更多详细信息。

如何在简单的控制台应用程序中使用它?

3 个答案:

答案 0 :(得分:10)

您可以在控制台启动时初始化Automapper,没有任何限制; Application_start是.net / iis中Web程序的启动位置,即只调用一次的代码。在Web项目开始时必须调用的任何配置都采用此方法。

编辑评论:如果您不想动态创建映射,但宁愿有地方初始化所有映射,只需创建一个名为InitializeAutomapper的函数并在此处进行Mapper.Configure<X, Y>来电。然后在Main()方法中,只需调用该函数即可。有很多方法可以处理配置,但这是处理它的更简单方法。

代码示例

class Program
    {
        static void Main(string[] args)
        {
            // the app is starting here
            InitializeAutomapper();
            // we're configured, let's go!
            DoStuff();
        }

        static void InitializeAutomapper()
        {
            AutoMapper.Mapper.CreateMap<TypeA, TypeB>();
            AutoMapper.Mapper.CreateMap<TypeC, TypeD>();
            AutoMapper.Mapper.CreateMap<TypeE, TypeF>();
        }
    }

答案 1 :(得分:3)

我知道这是一个老问题,但是如果您发现了这个问题,我想添加一个更新:Automaper 不再允许静态初始化。

You can check more here

下面,我将提供如何在控制台应用程序上使用它的完整示例。希望这可能对未来的某人有所帮助。

class Program
{
    static void Main(string[] args)
    {
        var config = new MapperConfiguration(cfg => {
            cfg.CreateMap<MyClass, MyClassDTO>();
        });
        IMapper mapper = config.CreateMapper();

        var myClass = new MyClass(){
            Id = 10,
            Name = "Test"
        };
        var dst = mapper.Map<MyClass, MyClassDTO>(myClass);

        Console.WriteLine(dst.Id);
    }
}

class MyClass
{
    public int Id {get;set;}
    public string Name {get;set;}
}

public class MyClassDTO
{
    public int Id {get;set;}
    public string Name {get;set;}
}

不要忘记包含 using AutoMapper;

答案 2 :(得分:0)

是的,但它似乎依赖于System.Web,它也必须包含在内。

(有关详细信息,请参阅Mysterious disappearing reference