如何从包含对象的列表转换为另一个列表。

时间:2011-09-21 13:49:00

标签: c# list casting

我有一个接口[BindControls],它从GUI获取数据并将其存储到列表“ieis”中。

之后,进入另一个通过WebServices发送此数据的类,我想从“ieis”获取这些数据并将其放入WS Class字段所需的内容中(底部是一段代码)

这是界面:

void BindControls(ValidationFrameBindModel<A.B> model)
        {
            model.Bind(this.mtbxTax, (obj, value) =>
            {
                var taxa = TConvertor.Convert<double>((string)value, -1);

                if (taxa > 0)
                {
                    var ieis = new List<X>();

                    var iei = new X
                    {
                        service = new ServiceInfo
                        {
                            id = Constants.SERVICE_TAX
                        }, 
                        amount = tax,
                        currency = new CurrencyInfo
                        {
                            id = Constants.DEFAULT_CURRENCY_ID
                        }
                    };
                    ieis.Add(iei);
                }
            },"Tax");
        }

这是中间财产:

// * ** * ** * ** *

class A 
{
  public B BasicInfo
        {
            get;
            set;
        }

 class B
        {

            public X Tax
            {
                get;
                set;
            }
        }
}

// * ** * ** * ** * *

这是通过WS发送的类:

void WebServiceExecute(SomeType someParam)
        {
//into ‚iai’ i store the data which comes from interface

            var iai = base.Params.FetchOrDefault<A>( INFO, null);

            var convertedObj = new IWEI();
            //...            
            var lx = new List<X>();

 //1st WAY: I tried to put all data from ‚Tax’into my local list ‚lx’
            //lx.Add(iai.BasicInfo.Tax); - this way is not working

    //2nd WAY: I tried to put data separately into ‚lx’ 
            var iei = new X
            {
                service = new ServiceInfo
                {
                    id = iai.BasicInfo.Tax.service.id
                },
                amount = iai.BasicInfo.Tax.amount,
                currency = new CurrencyInfo
                {
                   id = iai.BasicInfo.Tax.currency.id
                }
            };

            lx.Add(iei);

// but also is not working

你可以帮我建议如何实施一种能很好地完成工作的方法(从中获取数据,ieis'并将她放入,lx')。 非常感谢你

1 个答案:

答案 0 :(得分:1)

正如我的评论中所述,看起来iai.BasicInfo.Tax为null,一旦你发现原因为Add()(#1)的原因为null,就会有效。