我想创建一个具有委托形式的可覆盖方法的类。
我基本上想创建一个接口,但每次我想让它略有不同时都不必创建一个新类。
此外,我想将委托与结构中的许多其他变量捆绑在一起。
现在这里有一些更多的细节。
class Gun
{
public delegate void ShootDelegate;
// There are more variables, I'm just using this one as an example
public double fireRate;
public Gun(GunStats stats)
{
this.Shoot = stats.Shoot;
this.fireRate = stats.fireRate;
}
public ShootDelegate Shoot;
}
struct GunStats
{
public ShootDelegate Shoot;
public double fireRate;
}
那么,我想做的就是制造这样的枪
GunStats stats;
stats.fireRate = 3;
stats.Shoot = new delegate() { this.fireRate++; /* stupid example */ };
new Gun(stats);
但是,当我创建委托时,它显然不能与内部类变量交互。
处理这个问题的最佳方法是什么?