1

我定义了自己的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”
我的错误在哪里?

4

1 回答 1

1

typeof(T)返回一个Type对象,该对象具有关于由 表示的类的元信息TSomeMethod正在寻找一个可扩展的对象IExportable,因此您可能想要创建一个T可扩展的对象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以更好地说明您的代码中发生了什么:

public static A SomeAction<B>(IList<T> data) where T : IExportable
{
    //Notice what typeof returns.
    System.Type tType = typeof(T);
    IList<B> BLists = SomeMethod(tType);
    //...
}  
于 2013-07-22T04:30:46.367 回答