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

时间:2017-08-16 08:08:10

标签: c# monogame

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

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的构造函数之前分离列表,但是本着保持我的主类基本上没有逻辑的精神,而只是用它来初始化所有东西,我希望那里有#39 ;是另一种解决方案。

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

1 个答案:

答案 0 :(得分:1)

您可以在派生类中创建一个私有静态方法来修改数据并返回值以传递给基类&#39;构造:

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