修改数据后从派生类调用基类的构造函数



首先,对不起,如果已经问过这个问题,但我一直在谷歌上搜索,没有找到任何解决方案。我在想也许我只是不知道如何正确表达这个问题。

public class WeatherEngine : ParticleEngine
{
public enum WeatherType
{
None,
Rain,
Snow
}
public WeatherEngine(List<Texture2D> weatherTextures, WeatherType weatherType) : base(weatherTextures, null)
{}

我目前正在尝试从我的粒子引擎派生我的天气类,但我很难弄清楚是否有办法在将某些数据传递到基类构造函数之前对其进行修改。

理想情况下,我希望能够为每种天气类型传递可能天气纹理的完整列表,然后将该列表分成另一个列表List<Texture2D> currentWeatherTextures传递给基构造函数。

AFAIK,我唯一的其他选择是在调用 WeatherEngine 的构造函数之前分离列表,但本着让我的主类大部分没有逻辑并只使用它来初始化所有内容的精神,我希望有一个替代解决方案。

或者我根本不应该从ParticleEngine派生WeatherEngine,并将两者分开?

您可以在派生类中创建一个私有静态方法,该方法修改数据并返回要传递给基类构造函数的值:

using System;
namespace ConsoleApp2
{
public class Base
{
public Base(string param)
{
Console.WriteLine("Param: " + param);
}
}
public class Derived : Base
{
public Derived(string param) : base(Modify(param))
{
}
static string Modify(string s)
{
return "Modified: " + s;
}
}
class Program
{
static void Main()
{
Derived d = new Derived("Test");
}
}
}

最新更新