我决定在我的 ViewModelBaseClass 中添加自定义 Get/SetValue(with INotifyPropertyChanged) 辅助函数,类似于此处提到的类型安全方法。但是我想将可选的初始化程序添加到具有合理默认值的 Get helper Function 中。不幸的是,default 关键字将引用类型初始化为 null,将可为 null 的值类型初始化为 null,将值类型初始化为默认值。
我想创建一个通用函数,该函数将由 Get 帮助器调用,该函数返回类型的默认值、Nullable 的 BaseType 的默认值(如果可能)以及具有默认构造函数的引用类型的默认构造函数。对于不实现构造函数的引用类型,我猜它可能会返回 null。但是弄清楚如何在 if else 中调用 new T() vs default(T) 很困难,编译器说它没有正确的约束(因为当然约束是在运行时检查的)。
作为替代方案,我想我可以在 Get helper方法(其中他说:
这可能是我写过的最可怕的代码。
请,请不要在现实生活中使用它。使用不同的方法名称或类似名称。不过,这是一个有趣的小谜题,不是吗?
) 作为一个好处,它可能允许我在没有默认构造函数的情况下强制引用类型来指定非可选的 init Func。