C#:接口而不是变量定义中的类

Zby*_*nek 1 c# interface

我有以下问题:

我有接口ILocation,它包括获取功能位置的功能(在2D网格中).并非所有类都可以具有此接口,但这些接口彼此无关(不相互继承等).即具有此接口的类是Person,Item,BuildingBlock ...

现在我有类Location,其中包含变量"block".基本上任何东西都可以存在,只有一个条件:它必须实现接口ILocation.我怎样才能做到这一点?我不知道,哪个类将在此变量中,因此必须将其指定为Object,但我知道,它必须实现ILocation.如何才能做到这一点?

在下面的示例中,我想实现方法Symbol,它位于ILocation接口中.

public class Location :ILocation
{
    public int X {get; set;}
    public int Y {get; set;}
    public Object block;

    public Location (int x, int y, Object o)
    {
        X = x;
        Y = y;
        block = o;
    }

    public char Symbol()
    {
        return block.Symbol();
    }
}
Run Code Online (Sandbox Code Playgroud)

这当然会产生错误,因为类Object的实例块不实现ILocation.

那么 - 我怎么能告诉C#,在变量"block"中可以是任何实现ILocation的对象?

谢谢

兹比涅克

Ser*_*kiy 5

将块变量声明为位置:

public ILocation block;

public Location (int x, int y, ILocation o)
{
    X = x;
    Y = y;
    block = o;
}
Run Code Online (Sandbox Code Playgroud)