2017-08-24 62 views
0

我有這個功能我怎麼能發送類型的功能

public IList<TEntity> GetData<TEntity>() where TEntity : class 
    { 
     return _DbContext.Set<TEntity>().ToList(); 
    } 

,我所以現在我有從字符串動態加載類View_Export_Books調用這個函數像這樣

GetData<View_Export_Books>() 

。這可能嗎?

感謝您的任何幫助。

添加註釋:

我View_Export_Books爲字符串,我想將其轉換爲一個通用的參數。

+0

你到底在問什麼?你是否想要一種將泛型參數轉換爲字符串的方法?或者如何改變方法不使用泛型並接受字符串作爲參數呢? – Sweeper

+2

[我如何使用反射來調用泛型方法?](https://stackoverflow.com/questions/232535/how-do-i-use-reflection-to-call-a-generic-method) – thehennyy

+0

我有View_Export_Books作爲字符串,我想將其轉換爲通用參數。 – user1861065

回答

0

我希望它能幫助你。如果您有任何問題,請告訴我。

public class MyClass 
    { 
     public IList<TEntity> GetData<TEntity>() where TEntity : class 
     { 
      return _DbContext.Set<TEntity>().ToList(); 
     } 

     public void Test() 
     { 
      var type = GetTypeOf("View_Export_Books"); 
      var method = typeof(MyClass).GetMethod("GetData").MakeGenericMethod(type); 

      //This was a mistake. 
      //var instance = Activator.CreateInstance(type); 

      method.Invoke(this/*instance*/, new object[]{ }); 
     } 

     private Type GetTypeOf(string className) 
     { 
      var assembly = AppDomain.CurrentDomain.GetAssemblies().First(a => a.GetTypes().Any(t => t.Name == className)); 
      return assembly.GetTypes().First(t => t.Name == className); 
     } 
    } 
+0

嗨,感謝您的幫助,但出現以下錯誤:對象與目標類型不匹配。 on方法。調用(實例,新對象[]); – user1861065

+0

@ user1861065,對不起,我的壞。該實例不正確。我已經改變它,你可以看到錯誤的部分作爲評論。 –

+0

準確地說,我結束了這個......感謝您的幫助! – user1861065