.NET类型转换问题:简单但困难

jad*_*son 2 .net types casting type-conversion

好,

问题有点简单.

我有一个对象定义为:

public class FullListObject : System.Collections.ArrayList, IPagedCollection
Run Code Online (Sandbox Code Playgroud)

当我尝试:

IPagedCollection pagedCollection = (IPagedCollection)value;
Run Code Online (Sandbox Code Playgroud)

它不起作用... value是一个FullListObject ...这是我的新代码试图解决"is"运算符的问题.当系统测试时,(value is IPagedCollection)它永远不会对FullListObject成真.

如何使用接口类型将对象转换为另一个对象?

编辑:

仅供记录:bugger代码

if (value is IPagedCollection)
{
    IPagedCollection pagedCollection = value as IPagedCollection;
Run Code Online (Sandbox Code Playgroud)

if永远不会成真,并且迫使转换也不起作用.所以问题是类的双重定义.现在我在"Commom"项目中为整个系统使用的类定义了FullObjectList.问题消失了!

Luc*_*ero 6

你说得对.试试这个(它也会失败,但显示问题):

IPagedCollection pagedCollection = (FullListObject)value;
Run Code Online (Sandbox Code Playgroud)

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