初始化扩展类?

用户1551892

我从某个地方获取了AAA类的对象,我想在该对象中添加更多信息。因此,我正在创建一个从AAA派生的新类BBB。BBB类具有其他字段字典。我在派生类构造函数中填充此字典,该类构造函数使用AAA类对象和要用作字典键的项数组,并且此字典的值是AAA类对象字段的元素。我试图在打击示例代码中创建类似的场景:

void Main(){    
     A obj = new A () ;
     obj.prop1 =  new int [] {5 ,10, 15}   ;
     obj.prop2 =  "Hello" ;
     obj.prop3 = "World" ;
//   obj.Dump () ;
     B obj2 = new B (new int [] {1,2,3}, obj)  ;     
//   obj2.Dump () ;

}

// Define other methods and classes here
public class A {
    public int [] prop1 ;
    public string prop2 ;
    public string prop3 ;
}

public class B : A {
    public Dictionary <int, int> prop4 ;
    public B (int [] keys, A a) {
    prop4 = new Dictionary <int, int> () ;
        if (keys.Length == a.prop1.Length ) {
            for (int i = 0 ; i < keys.Length ; i++ ) {
                prop4.Add (keys[i], a.prop1[i]) ;
            }
            // is there a way to obsolete below lines of code???
            this.prop1 = a.prop1 ; 
            this.prop2 = a.prop2 ;
            this.prop3 = a.prop3 ;
        }
        else {
            throw new Exception ("something wrong") ;
        }           
    }
}

在派生类构造函数中,我手动填充属性,但我不想这样做。还有另一种方法可以做到这一点。我的实际课堂上有20多个属性。

莫霍

无法满足您的要求,但建议A为类创建一个副本构造函数,并将其与您的类B构造函数一起使用:

// Define other methods and classes here
public class A
{
    public int[] prop1;
    public string prop2;
    public string prop3;

    public A()
    {
    }

    public A(A orig)
    {
        prop1 = orig.prop1;
        prop2 = orig.prop2;
        prop3 = orig.prop3;
    }
}

public class B : A
{
    public Dictionary<int, int> prop4;

    public B(int[] keys, A a) : base( a )
    {
        prop4 = new Dictionary<int, int>();

        if (keys.Length == prop1.Length)
        {
            for (int i = 0; i < keys.Length; i++)
            {
                prop4.Add(keys[i], prop1[i]);
            }
        }
        else
        {
            throw new Exception("something wrong");
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Swift扩展中处理类初始化失败

来自分类Dev

如何从Java中的扩展类初始化对象

来自分类Dev

类的快速协议扩展链接初始化

来自分类Dev

无法初始化类

来自分类Dev

使用{* this}初始化类

来自分类Dev

Grails类的初始化

来自分类Dev

Ruby类初始化

来自分类Dev

类数组的初始化

来自分类Dev

Grails类的初始化

来自分类Dev

Ruby类初始化

来自分类Dev

在类的初始化和初始化列表中

来自分类Dev

Ruby类初始化重写模块初始化

来自分类Dev

扩展UIAlertController便捷初始化警告

来自分类Dev

狂欢扩展:未初始化的常量

来自分类Dev

在C ++中初始化扩展结构

来自分类Dev

如何在现有UIKit类(如UIColor)的扩展中添加初始化程序?

来自分类Dev

为什么我不能将指定的初始化器放置到类的扩展中?

来自分类Dev

如何初始化一个类并快速使用扩展

来自分类Dev

初始化类而不实例化?

来自分类Dev

当父类无法将自身作为构造函数的参数时,使用实例初始化扩展类

来自分类Dev

唯一的指针类初始化

来自分类Dev

初始化Ruby类的惯用方式

来自分类Dev

在类级别初始化静态NSString

来自分类Dev

Swift中的类初始化

来自分类Dev

类实例变量的初始化顺序?

来自分类Dev

std :: vector类成员的初始化

来自分类Dev

在Swift中初始化类常量

来自分类Dev

初始化聚合为类成员

来自分类Dev

使用malloc()初始化类