好,

这个问题有点简单。

我有一个对象定义为:

public class FullListObject : System.Collections.ArrayList, IPagedCollection

当我尝试:
IPagedCollection pagedCollection = (IPagedCollection)value;

它不起作用...值是FullListObject ...这是我的新代码,试图解决“is”运算符的问题。当系统测试(value is IPagedCollection)时,对于FullListObject永远不会为真。

如何将对象转换为具有接口类型的另一个对象?

编辑:

仅作记录:bugger代码
if (value is IPagedCollection)
{
    IPagedCollection pagedCollection = value as IPagedCollection;

if从未实现,强制转换也不起作用。因此,问题在于类的双重定义。现在,我在“Commom”项目中为整个系统使用的类定义了FullObjectList。问题不见了!

最佳答案

您做对了。试试这个(它也会失败,但会显示问题):

IPagedCollection pagedCollection = (FullListObject)value;

编译器应该接受这一点。如果不是,则您有相互冲突的IPagedCollection和/或FullListObject的多个定义。如果在运行时失败,则您的值不是FullListObject

关于.net - .NET类型转换问题:简单但困难,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2547268/

10-10 12:37