我正在尝试实现一种方法,将从接口派生的给定对象转换为也从同一接口派生的不同类型。这样可以防止必须完全重建对象。
interface IItem
{
}
class FryingPan : IItem
{
}
class CookingPan : IItem
{
}
但是这里有捕获,我不知道'我投的是什么类型。我只知道一个类型变量。这是从组合框中设置的。
Type SelectedItem { get; set; }
可以这样做(最好不必实施IConvertable
)
答案 0 :(得分:3)
如果您要做的是将CookingPan投射到FryingPan,则无法完成。一个人必须从另一个派生出来。想象;
interface IFruit
{ }
class Apple : IFruit
{ }
class Orange : IFruit
{ }
显然,苹果永远不会是橙色,反之亦然。但是,你可能将一个苹果或橙色投射到IFruit,因为它们都共享那个共同的祖先。或者,如果你是一个疯狂的科学家,也许你可以将苹果变成橙色。 ; - )
我会说你以错误的方式接近你的问题。如果您需要根据其类型对IItem执行某些特定操作,那么您已经拥有该信息。如果您需要一些常见的排序条件,请考虑将其作为所有派生类型的公共祖先移动到基类/接口。