首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以将对象强制转换为接口或新类

是否可以将对象强制转换为接口或新类
EN

Stack Overflow用户
提问于 2012-01-07 01:18:58
回答 1查看 174关注 0票数 1

我在应用程序中有一个silverlight应用程序,其中有一些用户控件与数据网格在其中,如购买订单,销售订单,转移等相关的东西。

它们的共同点是“文档类型”、“文档编号”。类型结构。

我正在尝试实现一个通用的打印功能,通过该功能我可以获得订单,然后将其发送回主机erp系统以创建PDF以供查看。

我试图避免在所有屏幕上添加相同的功能,所以我创建了一个带有打印按钮的打印报表用户控件。用户控件背后有一个View模型以及它的一些依赖属性。

这个想法是,当用户从一个网格中选择一个订单时,我们将依赖属性设置为从网格中选择的项目。为了适应这种情况,依赖属性的类型是object。

当设置了依赖属性时,我可以在DP的regstration中定义的回调方法中pcik up the obejct。Iso e.value可以是销售订单、调拨订单、采购订单。

代码语言:javascript
复制
private static void UpdatedTheValues(DependencyObject d, 
                                     DependencyPropertyChangedEventArgs e)
{

    var sender = d as NavReportPicker;
    if (sender != null)
    {
        PrintObjModel bbb = (PrintObjModel) e.NewValue;

    }
}

我可以推送这个属性,因为我可以将它传递给视图模型上的一个方法,但在任何时候我都不能对它做任何其他事情。

一位同事建议,为了使事情变得更清晰,也许添加一个接口,通过调用接口上的方法,将对象强制转换为接口或其他“共享类”,例如,添加一个接口到Sale Order,transfer ORder,Purcashe ORder类。

代码语言:javascript
复制
public NewPrintObj GetNewObject()
{
    PrintObj p = new PrintObj;
    p.No=1;
    p,type=2;
}

这似乎是一个相当好的想法,但我无法将依赖属性对象转换/强制转换为任何其他对象。

如果我强制转换,我会得到无效的强制转换异常,如果我安全地强制转换,我会得到一个null。

EN

回答 1

Stack Overflow用户

发布于 2012-01-07 01:26:35

我不能完全确定我是否理解了所有对象是如何相关的(所有订单都是从PrintObjModel派生的吗?)

我的答案是在依赖属性更改事件中放置一个断点,并查看e.NewValue的内容。这将允许您查看您所拥有的内容,以及是否可以强制转换为PrintObjModel

要么是e.NewValue中的值不是您期望的值,要么是您期望的值不是从您认为它所做的事情派生出来的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8761735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档