如何在运行时对C#类进行属性重写

本文关键字:属性 重写 运行时 | 更新日期: 2023-09-27 18:30:13

考虑一些代表一些应用程序数据的C#类。例如具有某些属性的class A

public class A
{
    public bool P1 { set; get; }
    public string P2 { set; get; }
    public int P3 { set; get; }
}

此外,我的申请中有不同的时间范围。比方说时间范围1和2。起初,我的应用程序设置为时间范围1。A的一些实例类似地存在于所有时间范围中。现在我切换到时间范围2,并为A的某个实例的P2设置一个新值。新值应仅影响时间范围2。在切换回时间范围1时,P2应具有旧值。切换回时间范围2P2再次为新值。

每当我在数据模型中设置任何值时,它都应该特定于当前时间范围,而不会影响其他时间范围。另一方面,未更改的值应在所有时间范围内共享。对于如何表示这些时间范围没有任何要求。可能是某种TimeRange类,但也可能是其他类。

您将如何在C#中设计这样一个场景?

如何在运行时对C#类进行属性重写

我认为您必须将属性替换为方法,因为它是随时间范围重新分配的。如果可能的话,也可以将时间范围包括在此类中。

也许您可以用Tuple<string, string>更改string P2,这样您就可以在切换"模式"时访问这两个值。