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

问题描述:

首先,如果已经有人问过这个问题,不好意思,但是我一直在搜索并没有找到任何解决方案。我在想,也许我只是不知道如何正确地说出问题。修改数据后从派生类调用基类的构造函数

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"); 
     } 
    } 
}