[英]Casting class object to interface C#
我想知道将类对象转换为它实现的接口的机会是什么? 例如:
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字段吗? 显然这不是接口的领域,因为我们无法与他们合作。 感谢您的建议!
当将mapObject
为IArmy
接口时,它仍然保留在内部的mapObject
类(Creep),但是您只能调用IArmy
接口隐含的IArmy
。
如果您问为什么以及如何使用它:您可以创建另一个实现IArmy
接口的类,当将其IArmy
为IArmy
,可以像实现它的其他类一样处理它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.