我定义了自己的IExportable
界面,并将其用作
public static A SomeAction<B>(IList<T> data) where T : IExportable
{
var tType = typeof(T);
IList<B> BLists = SomeMethod(tType);
//...
}
SomeMethod
是:
List<B> SomeMethod(IExportable exportData)
{
// do somethings
}
但是当我运行我的应用程序时出现此错误:
SomeMethod(IExportable)的最佳重载方法匹配包含一些无效参数
无法从'System.Type'转换为'IFileExport'
我的错在哪里?
答案 0 :(得分:1)
typeof(T)
返回一个Type对象,该对象包含有关由T
表示的类的元信息。 SomeMethod
正在寻找扩展IExportable
的对象,因此您可能希望创建一个扩展T
的{{1}}对象。您有几个选项可以做到这一点。最直接的选项可能是在您的通用参数上添加IExportable
约束并使用new
的默认构造函数。
T
我已明确说明了//Notice that I've added the generic paramters A and T. It looks like you may
//have missed adding those parameters or you have specified too many types.
public static A SomeAction<A, B, T>(IList<T> data) where T : IExportable, new()
{
T tType = new T();
IList<B> BLists = SomeMethod(tType);
//...
}
的类型,以便更好地说明代码中发生了什么:
tType