好,
这个问题有点简单。
我有一个对象定义为:
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/