像这样的东西会起作用:
public T Get<T>(int id)
{
var newTypeName = typeof(T).FullName + "Data";
var newType = Type.GetType(newTypeName);
var argTypes = new [] { newType };
var method = GetType().GetMethod("Get");
var typedMethod = method.MakeGenericMethod(argTypes);
return (T) typedMethod.Invoke(this, new object[] { id });
}
如果您的 XxxData 对象不是从 Xxx 继承的,您可能需要在返回结果之前进行一些自动映射。
然后您必须将最后一行替换为:
var dataResult = typedMethod.Invoke(this, new object[] { id });
var result = new T(); // You will have to add a new() constraint on generic parameter
// Map your dataResult object's values onto the result object's values
return result;