Mono中使用默认参数的抽象方法(Unity3D)

时间:2015-12-05 10:43:21

标签: c# unity3d polymorphism abstract-class abstract

我正在使用C#(Unity3D is based on Mono)开发Unity3D游戏。

我写了一个抽象类 CompositeConnector 来声明抽象方法。其中一个, DrawContent 有一个默认的字符串参数。

public abstract class CompositeConnector : ScriptableObject
{
// ... 
    public abstract void DrawContent(GUISkin skin, float zoom_factor, string control_name = "");
// ...
}

从CompositeConnector继承的其他类也声明了一个默认参数。

public class InputTextConnector : CompositeConnector
{
// ...
    public override void DrawContent(GUISkin skin, float zoom_factor, string control_name = "")
    {
    // ...
    }
// ...
}

当我在没有最新参数的情况下调用此方法时出现问题。

// Produces the error.
_input_connector.DrawContent(_skin, _zoom_factor);
// No error.
_input_connector.DrawContent(_skin, _zoom_factor, "");

我收到错误,例如(不是在运行时):

  

未处理的异常:System.ArgumentException:密钥重复时   添加:Void DrawContent(UnityEngine.GUISkin,Single,System.String)

正如您所看到的,如果我设置参数并且不依赖于默认值,我就不会收到错误。我尝试了很多种组合,但我找到的唯一解决方案是不使用默认参数。

这是一个已知问题吗?我想在这里做错事吗?

0 个答案:

没有答案