如何将类型发送到函数

时间:2017-08-24 09:37:24

标签: c# class reflection

我有这个功能

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

我将此功能称为

GetData<View_Export_Books>()

所以现在我必须从字符串动态加载View_Export_Books类。这可能吗?

感谢您的帮助。

添加评论:

我将View_Export_Books作为字符串,我想将其转换为通用参数。

1 个答案:

答案 0 :(得分: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);
        }
    }