c# - 在调用基础构造函数之前处理参数

标签 c# inheritance

是否可以在将参数传递给基础构造函数之前对其进行处理?

如:

A --> B

其中 A 是抽象类,B 是子类。

A的构造函数是这样的:

Protected A (MyObject myObject)

B的构造函数是这样的:

Public B (string objectName)

我希望它是这样的

Public B (String objectName) : base (MyObject myObject)
{
myObject = new MyObject (objectName);
}

最佳答案

如果你想做一些不平凡的事情(这不能自然地适合你可以内联到 base 调用中的单个表达式),那么唯一的方法就是在静态方法,例如:

public B (string objectName) : base (SomethingComplex(objectName))
{
    //...
}
static MyObject SomethingComplex(string objectName)
{
    // this can now be arbitrarily complex
    if(string.IsNullOrWhiteSpace(objectName))
        throw new ArgumentException("objectName")
    // etc
    return new MyObject(objectName);
}

关于c# - 在调用基础构造函数之前处理参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15027423/

相关文章:

C# MVC.Net 格式货币不带小数

c# - 确保 Controller 有一个无参数的公共(public)构造函数

c++ - 尽管有友元,但无法访问基类

c++ - 类 : Pass as argument or inherit?

c++ 公共(public)继承的类成员不能用作默认参数

c# - 应用程序启动失败,因为并行配置不正确

c# - 如何解析 .msstyles 文件?

google-app-engine - 如何将数据传递给 GAE 基本模板?

java - 持久化扩展实体(jpa)的非实体类 - 示例?

c# - 故障响应包含一个字符串值,其中需要一个整数