作成しているクラスのセットアップを作成しようとしているので、作成時にマネージャークラスをセットアップでき、インターフェイスを介してそのクラスの関数を呼び出す必要がある場合があります。
これらの呼び出しは必ずしも必要ではなく、マネージャーは常にこのクラスを呼び出したクラスであるとは限らないため、単純な戻り値とそれをマネージャークラスから使用することは要件を満たしていません。
私がやろうとしているのは、次のコードです。(できるだけ不要なものを取り除こうとしました)
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
interface Itester
{
void LoadTest();
}
public partial class Form1 : Form, Itester
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button2_Click(object sender, EventArgs e)
{
World testWorld = new World();
testWorld.SetManager(this);
testWorld.InitializeWorld();
}
void Itester.LoadTest()
{
//random action I want run
label1.Text = "Ran LoadTest()";
}
}
public class World
{
Itester worldManager;
public World()
{
InitializeWorld();
}
private void InitializeWorld()
{
worldManager.LoadTest();
}
public void SetManager(Itester test)
{
worldManager = test;
}
}
}
これに基づいてこのエラーが発生します。エラーは「ワールドクラスのパブリックボイド」を参照しています
エラー1一貫性のないアクセシビリティ:パラメータタイプ'WindowsFormsApplication1.Itester'はメソッド'WindowsFormsApplication1.World.SetManager(WindowsFormsApplication1.Itester)'XYZロケーションForm1.cs316 21FeudalWorldよりもアクセスしにくい
私が期待していたのはそれでした。
Form1クラスは、ワールドクラスのローカルインスタンスを作成し、コンストラクターを実行し(何もしません)、マネージャーとして設定し(理論的には、Itesterインターフェイスを実装する別のクラスである可能性があります)、最後にワールドクラスを再度呼び出して要求します。ワールドを初期化するために、ワールドクラスがForm1インスタンスを呼び出し、ボタンのラベルを更新することを期待していました。
lvl1:Form1-> lvl2:World-> lvl3:Form1(または他のマネージャー)-> voidをlvl2:Worldに返す-> voidをlvl1:Form1に返す
何が欠けているのですか、なぜこれが機能しないのですか?