我正在研究一个项目,它将利用某种对象(在这种情况下我们称之为“机器”。这种类型的对象有参数,方法等。我希望使用它的方法。
在这种特殊情况下,我将有一个文本字段,允许用户改变我自己类的对象的某个属性,为简单起见,我们称之为“名称”。可以通过在用户可用的文本字段中键入名称来更改此属性“名称”。验证此文本字段将从“机器”调用该类的某个对象的方法,该方法可以从该页面上其他位置的ComboBox中选择。
由于这些对象是动态创建的,我不知道有多少这些对象以及它们是如何被特别调用的,我只知道它们存在。
你会如何处理这种情况?有没有什么方法可以基本上说“将它视为XY并使用它的方法就好像你确定它是某种类型”? (像演员?) 或者你会以其他方式解决这个问题吗?
答案 0 :(得分:0)
使用dynamic。
dynamic d = machine as dynamic;
d.Name = userInput;
也就是说,如果您可以强制这些对象实现具有您关心的属性的接口,那么您的代码将更快更安全。
答案 1 :(得分:0)
您可以从使用字典集合中受益:
class MyClass
{
public string Prop1 { get; private set; }
public int Prop2 { get; private set; }
public double Prop3 { get; private set; }
public Dictionary<string, Action<object>> Updater { get; private set; }
public MyClass()
{
Updater = new Dictionary<string, Action<object>>()
{
{"Prop1", o => Prop1 = o as string},
{"Prop2", o => Prop2 = (int)o},
{"Prop3", o => Prop3 = (double)o},
};
}
}
class Class27
{
static void Main()
{
Dictionary<string, MyClass> instances = new Dictionary<string, MyClass>();
instances.Add("First", new MyClass());
instances["First"].Updater["Prop1"]("hello");
instances["First"].Updater["Prop2"](10);
Console.WriteLine(instances["First"].Prop1);
Console.WriteLine(instances["First"].Prop2);
}
}
输出:你好,10