使用参数化构造函数c#创建类的对象

时间:2013-12-23 06:21:08

标签: c# android

我有一个带有多个参数化构造函数的类。

class MyClass{
    public MyClass(Context context) : this(context, VERTICAL)
    {
    }
    public MyClass(Context context, int Orientation) : base(context)
    {
        init(context, Orientation);
    }

    public MyClass(Context context, Android.Util.IAttributeSet attrs, int defStyle) : base(context, attrs, defStyle)
    {
              //more code
    }

    // I have to make an object of this MyClass into MyDataSetObserver class.

    public class MyDataSetObserver : DataSetObserver
    {
        MyClass mc;

        public MyDataSetObserver(MyClass _mc)
        {
            mc= _mc;
        }

        public override void OnChanged()
        {
                mc.onDataChanged ();
        }

            public override void OnInvalidated()
        {
                mc.onDataChanged();
        }
    }

//DatasetObserver usage

    public void setAdapter(Android.Widget.IAdapter myadapter, int initialPosition)
    {
        if (this.adapter != null) 
        {
            this.adapter.UnregisterDataSetObserver (adapterDataObserver);
        }

        //Assert.assertNotNull ("adapter should not be null", adapter);

        this.adapter = myadapter;
        adapterDataCount = adapter.Count;
        adapterDataObserver = new MyDataSetObserver (this);
        this.adapter.RegisterDataSetObserver (adapterDataObserver);
        if (adapterDataCount > 0) {
            SetSelection (initialPosition);
        }
    }
}

但是这给了我mc的值为null ..

另外,我需要进行构造函数链接,这是正确的方法吗?

1 个答案:

答案 0 :(得分:1)

adapterDataObserver = new MyDataSetObserver (this); 

this这是什么?你的班级是MyClass的实例吗?那么它应该有一个Context对象。

或者只是通过@Yohannes的答案创建MyClass的实例,然后构建通过MyDataSetObserver的{​​{1}}对象