我有这个功能
public DataSet Fetch(string EntityName, ObjectParameter[] parameters, int pagesize, int pageindex)
{
Assembly asm = Assembly.Load("NCR.WO.PLU.ItemEDM");
Type _type = asm.GetTypes().Where(t => t.Name.Equals(EntityName)).ToList().FirstOrDefault();
object obj = Activator.CreateInstance(_type);
return DataPortalFetch<???>(parameters, pagesize, pageindex);
}
Run Code Online (Sandbox Code Playgroud)
我如何将该_type传递给通用部分?
您必须使用反射调用该方法.泛型是为编译时已知的类型而设计的; 你不知道编译时的类型,因此你必须跳过一些箍.它将是以下内容:
MethodInfo method = typeof(WhateverClass).GetMethod("DataPortalFetch");
MethodInfo constructed = method.MakeGenericMethod(new Type[] { _type });
return constructed.Invoke(this, new object[] {parameters, pagesize, pageindex});
Run Code Online (Sandbox Code Playgroud)
细节将取决于它是实例方法还是静态方法,无论是公共还是私有等 - 但基本要素是:
您可能希望将通用方法定义缓存在静态只读字段中,顺便说一下 - 它是可重用的.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |