【发布时间】:2011-03-15 04:56:54
【问题描述】:
我知道标题有点罗嗦,但我不知道该怎么问这个问题。这基本上是我用来过滤传递给继承类的对象类型的技术。先看代码,我再解释一下……
public interface IProjectile {}
public interface IPaintBall : IProjectile {}
public interface IPotato : IProjectile {}
public class Prop
{
public void Shoot(params IProjectile[] projectiles)
{
// logic goes here...
}
}
public class Car : Prop
{
public override void Shoot(params IPaintBalls[] paintBalls)
{
base.Shoot(paintBalls);
}
}
看到了吗?我不想让你用土豆射击我的车。你只能用彩弹射击它。那么我这样做是否正确?同样,当Prop 类有大约 100 个函数时,这变得更加复杂,我也想过滤到只是彩弹。我不想为Car 类写出那 100 多个函数,对吧?我特别不想为我将要编写的 100 多个 Car 类写出那 100 多个函数。
我在这里说得够清楚吗?
这只是一个例子。我不是在做游戏编程或类似的事情。我只是想给你们一个非常简单的例子来传达我想要的东西。基本上,如果有人试图将土豆传递给 Car 的 Shoot() 函数,我不希望代码编译。
【问题讨论】:
-
肯定
public void Shoot(params IPaintBalls[] paintBalls) : base(paintBalls)是无效的C#? -
@Noldorin,您是对的,先生。已修复。
标签: c# inheritance filtering