如何在C#中初始化派生类?

如何在C#中初始化派生类?,c#,C#,我有一个基本类: public class Processor { ParsedString _parsedMessage; Utilizador _utilizador; public Processor(ParsedString parsedMessage, Utilizador utilizador) { _parsedMessage = parsedMessage; _utilizador = utilizador;

我有一个基本类:

public class Processor
{
    ParsedString _parsedMessage;
    Utilizador _utilizador;

    public Processor(ParsedString parsedMessage, Utilizador utilizador)
    {
        _parsedMessage = parsedMessage;
        _utilizador = utilizador;

    }

    public virtual String Execute()
    {
        string result = null;
        return result;
    }

}
然后是一个派生类

public  class RegistarAnuncio:Processor
{
    public RegistarAnuncio(ParsedString parsedMessage, Utilizador utilizador)
    {
    }
}
而编译器给出的错误是:

错误9方法“Processor”的重载不接受“0”参数C:\Documents and Settings\user\My Documents\projectos\Licensicatura\Prototipo\Agrinfo\AgrinfoLib\Interfaces\SMS\Processors\RegistraRuncio.cs 11 16 AgrinfoLib

我在谷歌上搜索C#reference,但我没有找到一个代码示例,在这个示例中,人们使用参数初始化基类方法,有人能给我帮助吗

关于,

您需要执行以下操作:

public RegistarAnuncio(ParsedString parsedMessage, Utilizador utilizador)
    : base(parsedMessage, utilizador)
{
}
您需要执行以下操作:

public RegistarAnuncio(ParsedString parsedMessage, Utilizador utilizador)
    : base(parsedMessage, utilizador)
{
}

要使用此语法调用基本构造函数:

public class RegistarAnuncio : Processor
{
    public RegistarAnuncio(ParsedString parsedMessage, Utilizador utilizador)
        : base (parsedMessage, utilizador)
    {
    }
}
我有一个更详细的计划。非常简单地说:

  • 您可以使用
    base(arguments)
    this(arguments)
    ——第一个版本调用基类构造函数,第二个版本调用同一类中的另一个构造函数
  • 如果不指定任何内容,就像使用
    base()
  • 您不能使构造函数调用循环(即,一个构造函数调用另一个构造函数调用第一个构造函数)
  • 您只能链接到一个构造函数(但一个可以链接到另一个)
  • 构造函数调用发生在构造函数体执行之前,但发生在任何实例变量初始值设定项之后
”的一个常见用法是使用默认值。例如:

const string DefaultFirstValue = "fred";
const int DefaultSecondValue = 20;

public Foo(string firstValue, int secondValue)
{
    this.firstValue = firstValue;
    this.secondValue = secondValue;
}

public Foo(string firstValue) : this(firstValue, DefaultSecondValue)
{
}

public Foo(int secondValue) : this(DefaultFirstValue, secondValue)
{
}

public Foo() : this(DefaultFirstValue, DefaultSecondValue)
{
}

对于C#4,这将不太有用,因为将有可选参数和命名参数。当然,您可能仍然希望为不支持这些功能的语言提供重载。

您希望使用此语法调用基本构造函数:

public class RegistarAnuncio : Processor
{
    public RegistarAnuncio(ParsedString parsedMessage, Utilizador utilizador)
        : base (parsedMessage, utilizador)
    {
    }
}
public  class RegistarAnuncio:Processor
{
    public RegistarAnuncio(ParsedString parsedMessage, Utilizador utilizador)
      : base(parsedMessage, utilizador)
    {
    }
}
我有一个更详细的计划。非常简单地说:

  • 您可以使用
    base(arguments)
    this(arguments)
    ——第一个版本调用基类构造函数,第二个版本调用同一类中的另一个构造函数
  • 如果不指定任何内容,就像使用
    base()
  • 您不能使构造函数调用循环(即,一个构造函数调用另一个构造函数调用第一个构造函数)
  • 您只能链接到一个构造函数(但一个可以链接到另一个)
  • 构造函数调用发生在构造函数体执行之前,但发生在任何实例变量初始值设定项之后
”的一个常见用法是使用默认值。例如:

const string DefaultFirstValue = "fred";
const int DefaultSecondValue = 20;

public Foo(string firstValue, int secondValue)
{
    this.firstValue = firstValue;
    this.secondValue = secondValue;
}

public Foo(string firstValue) : this(firstValue, DefaultSecondValue)
{
}

public Foo(int secondValue) : this(DefaultFirstValue, secondValue)
{
}

public Foo() : this(DefaultFirstValue, DefaultSecondValue)
{
}

对于C#4,这将不太有用,因为将有可选参数和命名参数。当然,您可能仍然希望为不支持这些特性的语言提供重载。

您需要调用基类的现有构造函数

public  class RegistarAnuncio:Processor
{
    public RegistarAnuncio(ParsedString parsedMessage, Utilizador utilizador)
      : base(parsedMessage, utilizador)
    {
    }
}
public  class RegistarAnuncio:Processor
{
    public RegistarAnuncio(ParsedString parsedMessage, Utilizador utilizador)
        : base(parsedMessage, utilizador)
    {
    }
}

您需要调用基类的现有构造函数

public  class RegistarAnuncio:Processor
{
    public RegistarAnuncio(ParsedString parsedMessage, Utilizador utilizador)
        : base(parsedMessage, utilizador)
    {
    }
}

您必须从派生类调用基类的构造函数。错误正在抱怨,因为您在YRU基类中没有默认的无参数构造函数。试试这个:

public  class RegistarAnuncio:Processor
{    
    public RegistarAnuncio(ParsedString parsedMessage, Utilizador utilizador)
        : base(parsedMessage, utilizador)
    {
    }
}

您必须从派生类调用基类的构造函数。错误正在抱怨,因为您在YRU基类中没有默认的无参数构造函数。试试这个:

public  class RegistarAnuncio:Processor
{    
    public RegistarAnuncio(ParsedString parsedMessage, Utilizador utilizador)
        : base(parsedMessage, utilizador)
    {
    }
}