如何通过字符串数组创建实例?

时间:2011-06-20 12:35:12

标签: c# .net asp.net generics

我有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);
}

上面的代码是一种简单的远见。不是真正的代码。如何仅使用字符串值创建实例?

3 个答案:

答案 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