[英]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.