0

我正在尝试完成一种方法,将从接口派生的给定对象转换为也从同一接口派生的不同类型。这是为了防止必须完全重建对象。

interface IItem
{
}

class FryingPan : IItem
{
}

class CookingPan : IItem
{
}

但这里有一个问题,我不“知道”我要投射到什么类型。我只知道类型变量。这是从组合框设置的。

Type SelectedItem { get; set; }

这可以做到吗(最好不必实施IConvertable

4

1 回答 1

3

如果您尝试将 CookingPan 转换为 FryingPan,则无法完成。一个必须从另一个派生才能铸造。想象;

interface IFruit
{ }

class Apple : IFruit
{ }

class Orange : IFruit
{ }

显然,苹果永远不可能是橙子,反之亦然。但是,您可以将 Apple 或 Orange 投射到 IFruit,因为它们都有共同的祖先。或者,如果你是一个疯狂的科学家,也许你可以以某种方式将苹果变成橘子。;-)

我会说你以错误的方式处理你的问题。如果您需要根据 IItem 的 .Type 对其执行某些特定操作,那么您已经拥有该信息。如果您需要一些通用的排序标准,请考虑将其移至基类/接口,作为所有派生类型的共同祖先。

于 2012-07-26T22:19:04.787 回答