将对象转换回初始形式(Model)

时间:2016-01-12 14:36:57

标签: c# oop casting model

我有高低,但仍无法找到我的问题的解决方案所以我会在这里发布。

这是我的ViewModel

    public class CustomerDetail
    {
        FirstName {get;set;}
        LastName {get;set;}
        ID {get;set;}
       Email {get;set;}
    }

这是我将模型传递给另一个文件夹(项目)中的另一个方法的方法,我实际上将模型传递给reportViewer以导出为pdf

fileExporter.Initialize(CustomerDetail).Export();

FileExportBase

 public abstract class FileExportBase
 {
    protected string someotherobject {get;set;}
    protected string someotherobject1 {get;set;}
    protected CustomerDetail customerProfile { get; set; }

    public abstract FileExportBase Initialize(params object[] args);
    public abstract OperationResult Export();

    public class CustomerDetail
    {
       FirstName {get;set;}
       LastName {get;set;}
       ID {get;set;}
       Email {get;set;}
    }

}

这是我检索数据的方式

public override FileExportBase Initialize(params object[] args)
{
    someotherobject = args[0].ToString();
    someotherobject1 = args[1].ToString();
    //This is where I am facing the problem
    customerProfile = (CustomerDetail)args[2];
    return this;
}

那么我该怎么做呢?在将对象作为对象传递之前,我必须将对象强制转换回我最初声明它的模型类型?

1 个答案:

答案 0 :(得分:0)

在您的情况下,您可能更愿意这样做:

CustomerDetail

现在这段代码有各种各样的问题,例如你依赖的索引可能会改变,从而破坏你的代码。您可能希望以直接接受public class Initialize<T>(T model, params string[] parameters) where T : class, new() { // Do Something } 的方式进行重构。

var customer = new T();
customer = model;

使用泛型,你现在可以做到:

T

这可以减轻索引的风险,同时具有灵活性。然后通过一点点反射,您可以轻松确定\b中的属性和字段索引。

不确定这是否对您有所帮助,但根据我所看到的并了解您的问题,这可能是有益的思考。如果你再添加一些说明,我可以提供更好的帮助。