【发布时间】:2025-12-18 16:15:02
【问题描述】:
我想在父抽象类中声明如下内容:
public abstract void RefreshDisplay<TView>(Enum value);
然后将在子类中实现,例如:
public override void RefreshDisplay<RxViewModel>(RxViews view)
其中 RxViews 是一个枚举,并从该枚举中“查看”特定值。
实际的视图和它来自的枚举要到运行时才能知道。
这可以吗?感谢您的帮助。
编辑:我可能问错了。 TView 不是枚举,而是继承自 ViewModelBase 的视图。 (我看不出这是一个重复的问题?)谢谢。
编辑:我猜这在 net 4.5 中已修复。任何想法如何在 net 4.0 中解决这个问题?
【问题讨论】:
-
为什么不使用两种泛型类型,一种用于 viewModel,另一种用于 Enum,如下所示: public abstract void RefreshDisplay
(TEnum value) where TEnum : Enum;跨度> -
您可以使用自定义类而不是枚举。基类可以定义为 Views
,您可以为每个 TView 继承它并为每个值提供静态实例。 -
很难说没有。不要对类型安全太过分了;让一切都合适可能是一种很好的心理锻炼,但有时向上转换和断言更具可读性和实用性,而且类型理论本身也有一些松散的边缘。
-
也可以考虑使用 java 风格的枚举:*.com/a/469315/171121