C# 将值标记为由用户输入或由应用程序计算

C# 将值标记为由用户输入或由应用程序计算,c#,input,state,C#,Input,State,我目前正在计划一个新的应用程序。此应用程序中使用的值可以由用户输入,也可以由应用程序本身计算 我需要做的是以一种我可以清楚识别源(用户或应用程序)的方式标记这些值 编辑(附加信息):其目的不是确定用户是否可以输入值。这样做的目的是让用户能够清楚地将值标记为用户正在计算或输入的值。该值不仅将在视图中使用,还将在计算中使用 A级将有一个双v。此双精度可以由用户计算或输入 class A { public double v; // <-- this would be the value

我目前正在计划一个新的应用程序。此应用程序中使用的值可以由用户输入,也可以由应用程序本身计算

我需要做的是以一种我可以清楚识别源(用户或应用程序)的方式标记这些值

编辑(附加信息):其目的不是确定用户是否可以输入值。这样做的目的是让用户能够清楚地将值标记为用户正在计算或输入的值。该值不仅将在视图中使用,还将在计算中使用

A级将有一个双v。此双精度可以由用户计算或输入

class A
{
    public double v;  // <-- this would be the value I'd like to mark as program-defined or user defined
}
它将被标记为程序定义的

有人有没有关于如何在C#中实现这一点的提示

在C++中,我将创建一个基类,并从中派生出来。但在C#中,我希望采用一种更通用的方法,它不会强迫我为每个输入类型创建一个类

关于如何实现这一点有什么想法吗


谢谢。

如果您正在寻找一种方法来标记某些属性或类,这些属性或类用于用户输入或内部输入,您可以使用属性进行标记

拥有一个通用类,该类实现了一个变量,该变量识别该值是否是应用程序或用户输入的值

可能的变量类型:

  • 字符串('user','app'…)
  • 一个枚举,因此如果该枚举被称为Source,那么它将是Source.User,如果是app Source.app
  • 一个整数(作为ID)

如果您的类型数量有限,我个人会使用枚举,因为它允许您提供建议的选项。如果你有很多类型,我会选择字符串或整数。

你的问题太宽泛了。您什么时候标记这些值?在事件处理程序中,是否说文本字段的“已验证”事件(即通常在字段失去焦点时)?在这种情况下,为什么不在该事件中设置一个布尔值来指示它是由用户输入的呢。。。用户输入的值或应用程序计算的值的概念必须在应用程序中传输,而不仅仅是在视图中传输……将原始值包装成一种类型,以确定它们的来源听起来是正确的想法。为标记使用enum可能是最简单的方法,但是您可能还希望探索带有子类的通用包装器类型来标识源(比enum更安全)。在F#中,我会使用有区别的联合(在引擎盖下作为类型层次结构实现)。
v = 1.0;