代码之家  ›  专栏  ›  技术社区  ›  lbrahim

从Typed对象映射到动态

  •  1
  • lbrahim  · 技术社区  · 10 年前

    我试图从键入的对象映射到 dynamic 但这似乎是不可能的。

    例如:

    public class Customer
    {
        public string CustomerName {get; set;}
        public Category Category {get; set;} 
    }
    
    public class Category
    {
        public string CategoryName {get; set;}
        public int IgnoreProp {get; set;}
    }
    

    然后我希望我的结果如下:

    var customer = new Customer
             { 
                 CustomerName = "Ibrahim", 
                 Category = new Category
                     { 
                       CategoryName = "Human", 
                       IgnoreProp = 10 
                     } 
             };
    
    dynamic dynamicCustomer = Mapper.Map<Customer, dynamic>(customer);
    

    我可以配置吗 AutoMapper 以某种方式处理这件事?

    2 回复  |  直到 10 年前
        1
  •  1
  •   samy    10 年前

    看起来有可能,以下测试成功:

    public class SourceObject
    {
        public int IntProperty { get; set; }
        public string StringProperty { get; set; }
        public SourceObject SourceProperty { get; set; }
    }
    
    internal class Program
    {
        private static void Main(string[] args)
        {
            var result = AutoMapper.Mapper.Map<dynamic>(new SourceObject() {IntProperty = 123, StringProperty = "abc", SourceProperty = new SourceObject()});
            Console.WriteLine("Int " + result.IntProperty);
            Console.WriteLine("String " + result.StringProperty);
            Console.WriteLine("Object is " + (result.SourceProperty == null ? "null" : "not null").ToString());
            Console.ReadLine();
        }
    }
    

    这将从SourceObject输出一个具有映射的财产的动态对象

        2
  •  0
  •   stuartd saeed    10 年前

    不需要使用AutoMapper映射到动态对象:

    dynamic dynamicCustomer = customer;
    Console.WriteLine(dynamicCustomer.CustomerName); // "Ibrahim"
    Console.WriteLine(dynamicCustomer.Category.CategoryName); // "Human"