我看不到MyLoad.TreeLoader()
,但为什么?
我已将iloader
实施为TreeViewLoad
。我应该能够看到TreeLoader()
。
namespace Rekursive
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//treeView1.Nodes.Add("Test");
iloader MyLoad = new TreeViewLoad();
MyLoad.loader("test", treeView1, 1);
}
}
interface iloader
{
void loader(string nodeName, TreeView myTre, int id);
}
class TreeViewLoad : iloader
{
public void TreeLoader(TreeView tre)
{
// Here I want to call the loader
}
public void loader(string nodeName, TreeView myTre, int id)
{
myTre.Nodes.Add(nodeName + id.ToString());
if (id < 10)
{
id++;
loader(nodeName, myTre, id);
}
}
}
}
答案 0 :(得分:5)
您通过界面引用该对象,这意味着您只能访问该界面的方法和属性。该接口有一个void loader方法,TreeLoader属于TreeViewLoad类。
TreeViewLoad myLoader = new TreeViewLoad();
// now you can access loader and TreeLoader.
答案 1 :(得分:2)
您将MyLoad变量声明为iloader接口,因此您只能在此处查看接口方法。要查看TreeLoader方法,请声明TreeViewLoad类型的MyLoad
答案 2 :(得分:1)
您声明变量MyLoad
属于接口类型ILoader
(我将其从iloder
更改为更常见的可读性约定)并且TreeLoader()
不是此接口的成员,因此您无法访问它。如果将变量强制转换为TreeViewLoad
,则可以访问它。
ILoader myLoad = new TreeViewLoad();
((TreeViewLoad)myLoad).TreeLoader(...);
但是你应该重新考虑你的设计 - 你通常不需要为具体类型建立一个接口,而且必须表明某些事情可能是错误的。
答案 3 :(得分:0)
这是我的回答:
namespace Rekursive { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { iloader MyLoad = new TreeViewLoad(); ((TreeViewLoad)MyLoad).TreeLoader(treeView1); } } interface iloader { void loader(string nodeName, TreeView myTre, int id); } class TreeViewLoad : iloader { public void TreeLoader(TreeView myTre) { loader("test", myTre, 1); } public void loader(string nodeName, TreeView myTre, int id) { myTre.Nodes.Add(nodeName + id.ToString()); if (id