不一致性可访问性:参数类型

时间:2014-01-29 20:33:24

标签: c# winforms

我在这里查看过几个帖子,我找到的解决方案都没有为我工作。当你点击一个菜单项时,我正试图将一个对象从表单a传递给表单b,它给了我错误:

错误1可访问性不一致:参数类型“WindowsFormsApplication1.character”比方法“WindowsFormsApplication1.CharBuilder.CharBuilder(WindowsFormsApplication1.character)”

更难访问

以下是发送表格:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class GVL4 : Form
    {
        public GVL4()
        {
            InitializeComponent();
        }

        public void mNewGame_Click(object sender, EventArgs e)
        {
            character MyCharacter = new character();

            MyCharacter.SetIsNew();

            CharBuilder NewCharacter = new CharBuilder(MyCharacter);

            NewCharacter.Show();
        }
    }
}

接收表格:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class CharBuilder : Form
    {
        character Char = new character();

        public CharBuilder()
        {
            InitializeComponent();
        }

        //Overloaded Constructor
        public CharBuilder(character cChar)
        {
            Char = cChar;
        }

        private void txtSect_TextChanged(object sender, EventArgs e)
        {

        }

        private void btnSaveID_Click(object sender, EventArgs e)
        {
            if (Char.IsNew())
            {
                Char.SaveCharIdentity(txtCharName.Text, txtClan.Text, txtSect.Text, txtNature.Text, txtDemeanor.Text, txtTitle.Text, txtCoterie.Text, txtSire.Text, txtPlayerName.Text, txtCharacterID.Text, txtStatus.Text, Convert.ToInt32(txtUnspentXP.Text), Convert.ToInt32(txtEarnedXP.Text), Convert.ToInt32(txtGeneration.Text), Convert.ToInt32(txtBloodPool.Text), cbxNPC.Checked);
            }

            txtTestBox.Text = Char.ToString();
        }

        public void CharBuilder_Load(object sender, EventArgs e)
        {

        }

    }
}

错误在重载(Public CharBuilder(character cChar))

3 个答案:

答案 0 :(得分:1)

character类在哪里定义?我怀疑它是GVL4内的私人课程?错误告诉您的是,即使您将character的实例传递给CharBuilderCharBuilder实际上也无法知道是什么 character对象。它正在接收一个对象,但它没有定义该对象的类。

确保两个表单都知道character类。我想它应该只是一个在项目中其他地方定义的单独类,可能是公共的或内部的,而不是任何特定形式的内部。

附注:您的代码很难阅读,因为您没有遵循C#惯例。类/类型名称应以大写开头,局部变量名称应以小写开头。

答案 1 :(得分:0)

这意味着您的character课程的可访问性低于public,就像您的公共方法一样。您需要确保访问修饰符是相同的。我不确定你的课堂设计,所以不确定最佳路线是什么,但如果没有人将你的代码用作图书馆,那么只需将角色类公开。

答案 2 :(得分:0)

你没有发布你的角色类的代码,但听起来这个类被标记为public以外的东西,这就是你看到这个错误的原因。将您的character课程的声明更改为public,这样就可以了。