我有高低,但仍无法找到我的问题的解决方案所以我会在这里发布。
这是我的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;
}
那么我该怎么做呢?在将对象作为对象传递之前,我必须将对象强制转换回我最初声明它的模型类型?
答案 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
中的属性和字段索引。
不确定这是否对您有所帮助,但根据我所看到的并了解您的问题,这可能是有益的思考。如果你再添加一些说明,我可以提供更好的帮助。