将 class 对象转换为接口 C#
Casting class object to interface C#
我想知道将 class 对象转换为它实现的接口有什么机会?例如:
public interface IOwner
{
int Owner { get; set; }
}
public interface IArmy
{
Army Army { get; set; }
}
public interface ITreasure
{
Treasure Treasure { get; set; }
}
public class Creep : IOwner, IArmy, ITreasure
{
public int Owner { get; set; }
public Army Army { get; set; }
public Treasure Treasure { get; set; }
}
和 class 与之配合使用:
public static class Interaction
{
public static void Make(Player player, object mapObject)
{
if (mapObject is IArmy)
if (player.CanBeat(((IArmy)mapObject).Army))
{
if (mapObject is IOwner)
((IOwner)mapObject).Owner = player.Id;
if (mapObject is ITreasure)
player.Consume(((ITreasure)mapObject).Treasure);
}
所以现在当我调用此行时:(player.CanBeat(((IArmy)mapObject).Army))
我可以从 mapObject class 访问陆军战场吗?这显然不是接口的领域,因为我们无法使用它们。谢谢指教!
当您将 mapObject
转换为 IArmy
接口时,它仍然在内部保持 mapObject
class(蠕变),但您只能调用 [= 所暗示的内容11=] 接口.
如果你问为什么以及如何使用它:你可以创建另一个实现 IArmy
接口的 class,当你将它转换为 IArmy
时,你可以同样地处理它与实现它的其他 classes 一样。
我想知道将 class 对象转换为它实现的接口有什么机会?例如:
public interface IOwner
{
int Owner { get; set; }
}
public interface IArmy
{
Army Army { get; set; }
}
public interface ITreasure
{
Treasure Treasure { get; set; }
}
public class Creep : IOwner, IArmy, ITreasure
{
public int Owner { get; set; }
public Army Army { get; set; }
public Treasure Treasure { get; set; }
}
和 class 与之配合使用:
public static class Interaction
{
public static void Make(Player player, object mapObject)
{
if (mapObject is IArmy)
if (player.CanBeat(((IArmy)mapObject).Army))
{
if (mapObject is IOwner)
((IOwner)mapObject).Owner = player.Id;
if (mapObject is ITreasure)
player.Consume(((ITreasure)mapObject).Treasure);
}
所以现在当我调用此行时:(player.CanBeat(((IArmy)mapObject).Army))
我可以从 mapObject class 访问陆军战场吗?这显然不是接口的领域,因为我们无法使用它们。谢谢指教!
当您将 mapObject
转换为 IArmy
接口时,它仍然在内部保持 mapObject
class(蠕变),但您只能调用 [= 所暗示的内容11=] 接口.
如果你问为什么以及如何使用它:你可以创建另一个实现 IArmy
接口的 class,当你将它转换为 IArmy
时,你可以同样地处理它与实现它的其他 classes 一样。