公共实例变量在第一个子项中可见,但在第二个子项中不可见

时间:2016-10-19 08:04:24

标签: c# oop inheritance xamarin.forms

我有三个类,其中一个(ContentPage)是在我使用的框架(xamarin.forms)中构建的。

ContentPage班级定义

public class ContentPage : TemplatedPage{
    public View Content { get; set; }
}

ContentPageRequiresRegistration班级定义

public class ContentPageRequiresRegistration:ContentPage
{
    private static enumUserType userType;
    public ContentPageRequiresRegistration():base()
    {
        if(userType==enumUserType.unRegistered)
            Task.Run(() => this.LoadRegitrationPage()).Wait();

    }

    private async void LoadRegitrationPage()
    {
        await Navigation.PushAsync(new Registration(false));
    }
}

FillForm班级

public partial class FillForm : ContentPageRequiresRegistration
{
    public FillForm(int formID){
        Content = new ....;
    }
}

出现的问题是Content类中的FillForm在当前上下文中不存在,即使它在超类中已公开定义。

我尝试在Content课程中找到ContentPageRequiresRegistration个实例,但它并没有给我任何错误。

我还尝试在base.Content课程中使用FillForm,但它工作正常,但是当我在没有base的情况下调用它时,它会给我错误The name 'Content' does not exist in the current context

为什么即使Content是公开的,也会发生这种情况,如何在FillForm课程中使用它而无需使用base

2 个答案:

答案 0 :(得分:0)

尝试在基类中定义一个方法来检索您的内容,

private View _content { get; set; }

public View getContent()
{
    return this._content;
}

答案 1 :(得分:0)

您需要将两个部分类更改为ContentPageRequiresRegistration

类型
  1. 在Xaml零件文件中,你应该有

    < ContentPageRequiresRegistration> ... < ContentPageRequiresRegistration/>

  2. 在C#partial class中,它应该扩展 正如您所做的那样ContentPageRequiresRegistration

    public partial class FillForm : ContentPageRequiresRegistration { public FillForm(int formID){ Content = new ....; } }