首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ValueInjecter进行压扁

用ValueInjecter进行压扁
EN

Stack Overflow用户
提问于 2012-12-06 09:15:38
回答 1查看 639关注 0票数 2

我尝试用ValueInjecter将多个对象映射到视图模型对象。但它不像我所期望的那样起作用。

代码:

代码语言:javascript
复制
class Call
{
    public string Number { get; set; }
    public string CustomerNumber { get; set; }
}

class Operation
{
    public int ID { get; set; }
    public string CallNumber { get; set; }
    public string TimeFrom { get; set; }
}

class Customer
{
    public string Number { get; set; }
    public string Name { get; set; }
}

class CallViewModel
{
    public string Number { get; set; }
    public string CustomerName { get; set; }
    public string OperationTimeFrom { get; set; }
}

class Test
{
    static void Main(string[] args)
    {
        var call = new Call { Number = "001337", CustomerNumber = "000001" };
        var op = new Operation { ID = 1, CallNumber = "001337", TimeFrom = "08:00" };
        var customer = new Customer { Number = "000001", Name = "John Doe" };

        var viewModel = new CallViewModel();
        viewModel.InjectFrom(call, op, customer);

        Console.WriteLine("Number:\t\t\t" + viewModel.Number);
        Console.WriteLine("CustomerName:\t\t" + viewModel.CustomerName);
        Console.WriteLine("OperationTimeFrom:\t" + viewModel.OperationTimeFrom);
        Console.ReadLine();
    }
}

预期输出:

代码语言:javascript
复制
Number:            001337
CustomerName:      John Doe
OperationTimeFrom: 08:00

有效输出:

代码语言:javascript
复制
Number:            00001
CustomerName:      
OperationTimeFrom: 

通知

Call.Number (在CallViewModel中表示为Number )被Customer.Number覆盖。CustomerNameOperationTimeFrom都无法获得指定源Customer.NameOperation.TimeFrom的值。

在这种情况下我该怎么做?ValueInjecter甚至支持这种场景吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-11 10:54:06

我想你想用另一种方式把它压平,它的工作方式是你从

代码语言:javascript
复制
obj.Prop.Prop1.Prop2 to obj.PropProp1Prop2

这是您修改的代码:

代码语言:javascript
复制
using System;
using Omu.ValueInjecter;

namespace ConsoleApplication1
{
    class Program
    {
        private static void Main(string[] args)
        {
            var call = new Call { Number = "001337", CustomerNumber = "000001" };
            var op = new Operation { ID = 1, CallNumber = "001337", TimeFrom = "08:00" };
            var customer = new Customer { Number = "000001", Name = "John Doe" };

            var model = new
                            {
                                Call = call,
                                Customer = customer,
                                Operation = op
                            };

            var viewModel = new CallViewModel();
            viewModel.InjectFrom<FlatLoopValueInjection>(model);

            Console.WriteLine("Number:\t\t\t" + viewModel.CallNumber);
            Console.WriteLine("CustomerName:\t\t" + viewModel.CustomerName);
            Console.WriteLine("OperationTimeFrom:\t" + viewModel.OperationTimeFrom);
            Console.ReadLine();
        }

        class Call
        {
            public string Number { get; set; }
            public string CustomerNumber { get; set; }
        }

        class Operation
        {
            public int ID { get; set; }
            public string CallNumber { get; set; }
            public string TimeFrom { get; set; }
        }

        class Customer
        {
            public string Number { get; set; }
            public string Name { get; set; }
        }

        class CallViewModel
        {
            public string CallNumber { get; set; }
            public string CustomerName { get; set; }
            public string OperationTimeFrom { get; set; }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13740338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档