【发布时间】:2016-11-07 03:00:36
【问题描述】:
我是 C# 新手,对编程也很陌生。我需要关于过去一周一直试图弄清楚的话题的帮助。我有 3 个文件:
- 控制:这是一个界面,应该包含我的列表 方法
ControlImpl : 这是接口的实现。
Runtime:包含哪些main方法之间的绑定代码 和接口实现
Test_main:我从哪里调用 运行时方法“调用”
问题:Control 文件中可以有任意数量的实例(例如:c、c1、c2 等),并且每个实例都应该能够调用 SetTime() 和 Nop() 方法.
我列出了SetTime() 和Nop() 的方法。但是如何将实例添加到列表中,以便每个实例在调用时都应该调用它的方法?
控制
namespace create_interface
{
interface Control
{
void SetTime(params object[] paramsArr);
void Nop(params object[] paramsArr);
}
public class CM
{
Control c = new ControlImpl();
public List<object> ControlMain()
{
List<object> methods = new List<object>();
methods.Add(new Action<object[]>(c.SetTime));
methods.Add(new Action<object[]>(c.Nop));
return methods;
}
}
}
ControlImpl :
namespace create_interface
{
public class ControlImpl : Control
{
void Control.SetTime(params object[] paramsArr)
{
Console.WriteLine("inside Control.SetTime {0} ", paramsArr[0]);
}
void Control.Nop(params object[] paramsArr)
{
Console.WriteLine("inside Control.Nop ");
}
}
}
运行时:
namespace create_interface
{
public class runtime
{
public void call(params object[] methodparams)
{
if ((methodparams[0].Equals(0)) || (methodparams[0].Equals(1)))
{
//List<Control> objectlists = cmObject.ControlObjectList();
List<object> methods = cmObject.ControlMain();
//Console.WriteLine(methods.Count);
Action<object[]> method = (Action<object[]>)methods[(int)methodparams[0]]; //object[]
object[] args = new object[] { methodparams[1] };
method(args);
}
else
Console.WriteLine("wrong ID number entered");
}
Test_main:
namespace create_interface
{
class test_main
{
static void Main(string[] args)
{
long time;
CallingFunc CF = new CallingFunc();
Console.WriteLine("enter method ID");
int methodID = Convert.ToInt32(Console.ReadLine());
try
{
switch (methodID)
{
case 0:
Console.WriteLine("enter the time in long");
time = Convert.ToInt64(Console.ReadLine());
CF.call(methodID, time);
break;
case 1:
CF.call(methodID, null);
break;
default:
Console.WriteLine("you entered wrong method ID or parameters");
break;
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
【问题讨论】:
-
你的意思是有一个包含所有实例的列表来同时在所有实例上执行给定的方法吗?如果是这样,请查看 System.Collection.Generics 命名空间中的 List
对象。 -
@NahuelIanni Test_main 应该包含 Runtime.call(ID);因此,ID 被传递给运行时-> 调用方法,该方法应链接到相应的实例(即 c、c1、c2 等)和相应的方法(即 SetTime 或 Nop)。
-
@NahuelIanni 所以我想它应该需要像一棵树这样的东西。由实例组成的树,这些实例应该链接到方法。但是,我不确定这是否是正确的程序。
标签: c# list dictionary data-structures