如何实现获取继承接口的函数? 我有这些接口:
interface IAnimal
interface IDog : IAnimal
interface ICat : IAnimal
interface IShelter
class DogShelter : IShelter
class CatShelter : IShelter
现在我希望IShelter有一个功能:
Store(IAnimal animal)
但是我希望DogShelter像这样实现它:
Store(IDog animal)
和CatShelter是这样的:
Store(ICat animal).
有办法做到这一点吗? 除了DogShelter实施Store(IAnmial动物)并检查“if(animal is IDog)”之外?
我应该使用Store(IAnimal animal)然后用(IDog)动物进行投射吗?
(我想使用关于IDog和ICat的接口继承。在实际代码中不能进行类继承) (计算时间在这一点上是有点重要的。使用Store(IDog动物)而不是检查“if(animal is IDog)”是否更便宜?还是只是为了方便?)
答案 0 :(得分:5)
这是解决方案。您应该使用generics constraints。
interface IShelter<T> where T : IAnimal
{
void Store(T animal);
}
class DogShelter : IShelter<IDog>
{
public void Store(IDog animal)
{
throw new NotImplementedException();
}
}
class CatShelter : IShelter<ICat>
{
public void Store(ICat animal)
{
throw new NotImplementedException();
}
}