我目前正在设计一个 winforms 应用程序,该应用程序需要能够将各种类中各种属性的值输出到串行/udp 端口。
我想知道是否有一种简单的方法可以在运行时迭代此项目中的所有类实例,然后向用户显示一个选择的一堆(可能是通过使用属性?)及其相应的字符串值,以便他们可以输出任何这些值的组合。
因此,对于(简化的)示例,假设我有两个类:
public class ClassA
{
public double Price{get;set;}
public int Units{get;set}
//other properties that I don't want visible to the user
}
public class ClassB
{
public string Name{get;set;}
public string Description{get;set;}
//other properties not visible to the user
}
我将在运行时实例化这些类的许多实例(它们可能不一定相互链接/引用/相关)。
例如
public ClassA Cars = new ClassA();
public ClassB Models = new ClassB();
public ClassA PCs = new ClassA();
//set properties of these instances
//etc.. more of these
我想收集所有这些实例并向用户显示相应的字段:
Cars.Price = "1000";
Cars.Units = "3";
Models.Name = "BMW";
Models.Description = "Luxury Car";
PCs.Price = "3000";
PCs.Units = "20";
请注意,这些值将在运行时发生变化,并且在发送数据时需要更新。我希望有人可以在这里为我指明正确的方向。
编辑
看起来这可能不可行。
有没有办法可以存储对象列表,这些对象指向我的属性/字段,以便我可以检索它的值?当然假设这些类实例只会创建一次,我可以在我的输出类中注册类属性/字段。那么输出类可以遍历这个列表,取回它所指向的对象的值,然后把需要的数据发送出去呢?
例如
class OutputData
{
Dictionary<string,object> OutputDataList = new Dictionary<string,object>();
public void RegisterData(string displayName, ref object dataField)
{
OutputDataList.Add(displayName,dataField);
}
//iterate over OutputDataList and get the value of the property/field it points to
}