将类对象转换为接口C#
我想知道将类对象强制转换到它从中实现的接口会带来什么机会?例如:将类对象转换为接口C#,c#,interface,implements,C#,Interface,Implements,我想知道将类对象强制转换到它从中实现的接口会带来什么机会?例如: public interface IOwner { int Owner { get; set; } } public interface IArmy { Army Army { get; set; } } public interface ITreasure {
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; }
}
以及使用它的类:
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类访问Army field?这显然不是interface的字段,因为我们无法使用它们。谢谢你的建议 当您将mapObject
转换为IArmy
接口时,它仍然停留在mapObject
类(爬行)的内部,但您只能调用IArmy
接口所暗示的内容
如果您问为什么以及如何使用它:您可以创建另一个实现
IArmy
接口的类,当您将它转换为IArmy
时,您可以用与实现它的其他类相同的方式来处理它。正在问接口的意义是什么?是的,这就是继承和动态转换的工作原理,我建议您仔细阅读