我正在尝试实现一种方法,将从接口派生的给定对象转换为也从同一接口派生的不同类型。这是为了防止必须完全重建对象。
interface IItem
{
}
class FryingPan : IItem
{
}
class CookingPan : IItem
{
}
但问题是,我不“知道”我要投射到什么类型。我只知道类型变量。这是从组合框设置的。
Type SelectedItem { get; set; }
这可以做到吗(最好不必实施IConvertable
)
如果您想要做的是将 CookingPan 投射到 FryingPan,则无法完成。一个必须从另一个派生才能进行铸造。想象;
interface IFruit
{ }
class Apple : IFruit
{ }
class Orange : IFruit
{ }
显然,苹果永远不可能是橙子,反之亦然。然而,你could将苹果或橙子投给 IFruit,因为它们都有共同的祖先。或者,如果你是一个疯狂的科学家,也许你可以convert不知怎的,苹果变成了橙子。 ;-)
我想说你正在以错误的方式处理你的问题。如果您需要根据 IItem 的 .Type 对它执行某些特定操作,那么您已经拥有该信息。如果您需要一些通用的排序标准,请考虑将其移动到基类/接口作为所有派生类型的共同祖先。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)