我有15个字符串值。例如:excel表名:客户,产品等。这些表的名称与db表相同,也是Ef 4.0实体名称。 (Products.cs,Customers.cs)
String[] excelSheets = GetExcelSheetNames(String.Format(@"C:\{0}\{1}", UserName, FileUploadForExcel.FileName));
foreach (String excelSheet in excelSheets)
{
GetEntity(excelSheet);
}
protected TModel GetEntity(string ClassNameFromExcelSheetName)
{
return(TModel)Activator.CreateInstance(ClassNameFromExcelSheetName);
}
上面的代码是一种简单的远见。不是真正的代码。如何仅使用字符串值创建实例?
答案 0 :(得分:3)
您可以使用.NET Reflection
在字符串表示中按类名创建类的实例检查以下关于反思的文章: http://www.codeproject.com/KB/dotnet/Reflection.aspx
System.Reflection.Assembly assem = Assembly.Load("");
object thisObj = assem.CreateInstance("Customers");
foreach (PropertyInfo pi in thisObj.GetType().GetProperties)
{
// List all properties in object
...
}
答案 1 :(得分:1)
你可能会使用某种工厂设计模式(http://en.wikipedia.org/wiki/Abstract_factory_pattern)
答案 2 :(得分:0)
您必须自己创建这些实例,可能使用AutoMapper。