Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 广义控制的设计策略_C#_.net - Fatal编程技术网

C# 广义控制的设计策略

C# 广义控制的设计策略,c#,.net,C#,.net,我有一个GUI控件,我需要对它进行概括,以便它可以在不同的情况下使用,我需要建议。让我先给你一些背景知识。我有一个模型,用于存储特定应用程序的所有数据。我通过此模型中的属性访问和设置数据点。 现在,我将模型的实例传递给GUI控件,在那里,客户端可以在控件中设置/重置/读取两个特定的数据(在我使用属性的代码中)。这很好,但是现在模型又有3组这两个“列”(6个新字段),在其他3种不同的新情况下,它们也需要由同一控件进行操作。显然,我不想为同一个控件再创建3个副本(是的,当控件第一次被设计时,扩展性

我有一个GUI控件,我需要对它进行概括,以便它可以在不同的情况下使用,我需要建议。让我先给你一些背景知识。我有一个模型,用于存储特定应用程序的所有数据。我通过此模型中的属性访问和设置数据点。 现在,我将模型的实例传递给GUI控件,在那里,客户端可以在控件中设置/重置/读取两个特定的数据(在我使用属性的代码中)。这很好,但是现在模型又有3组这两个“列”(6个新字段),在其他3种不同的新情况下,它们也需要由同一控件进行操作。显然,我不想为同一个控件再创建3个副本(是的,当控件第一次被设计时,扩展性没有被考虑,我知道,我知道)。因此,我尝试在控件构造函数中传递对属性的引用,这当然不起作用(编译器错误:属性、索引器或动态成员访问可能无法作为out或ref参数传递)。所以,我的问题是,在这种情况下,什么是好的设计策略?如何对该控件进行泛化,使其可以重用,并可以在模型中设置/编辑这些其他属性?
谢谢

您好,为什么不使用字典类型的属性来设置不同数量的属性(使用键值字符串表示属性名称,使用值表示属性值)您的意思是传递一个字典,其中包含我要在模型中设置的属性名称?或者在字典的值中传递属性名和引用?我指的是第二个选择(因为您的属性可以是不同的类)。如果您在不同的情况下始终只有两个字段,则可以使用两个固定字段和通用名称。如果您认为对于上下文,可能有不同数量的字段,使用字典。你也可以考虑使用工作流基础,它允许你制作定制的活动。当你想设计你的商业模型时,这个技术很有用。你给了我一个我已经忘记的东西的想法…System.Reflection.PropertyInfo。这样可以动态设置我想要的对象的任何属性。我只需要给它的财产名称(我知道)和问题解决。。。我想:)我会测试这个,如果它有效,我会发回。