公开方法实现供用户修改

时间:2014-03-03 01:37:29

标签: c# reflection

我目前正在制作一款封闭源游戏,但我想为它提供改装功能。特别是有一个文件StatData.cs,它存储了一个大型的公式和统计字典,我很乐意向mod制作者公开。

这个字典是在StatData构造函数中生成的,这是我想要公开的方法:

public StatData()
{
    AddDerivedStatDefinition(
        "mass",                                                          //Key
        "Mass",                                                          //Printable Name
        "Determines how much stuff there is in the thing",               //Printable Description
        0,                                                               //Lower Limit
        float.MaxValue,                                                  //Upper Limit
        1.0f,                                                            //Mutation Rate
        delegate(Genome genome, BodyPlan bodyPlan, Phenotype phenotype)  //delegate to be stored in DerivedStatDefinition object
        {
            return bodyplan.Volume * phenotype.Skin.Density;             //Formula
        } 
    );

   //snipped: 700 lines worth of similar definitions...
}

(注意:bodyplan.Volumephenotype.Skin.Density都是访问器,用于检索在同一构造函数中定义的其他统计信息)

虽然公开描述,限制和变异率很容易(只需从平面文件或通过XML导入它们,而不是硬编码),但公式委托是一个更复杂的问题。

我已经研究过插件体系结构,但我对它有点困惑:我发现的所有示例都是关于导入其他程序集,而不是重写现有程序集中的方法。我希望用户能够修改已定义的公式,而不是导入其他对象。很可能我错过了一些简单的东西,这就是我要问的原因。 :)

公开此代码的推荐策略是什么?

1 个答案:

答案 0 :(得分:0)

您是否必须使用简单的界面来实现具有默认实现的策略模式?