1
閱讀Skeet's article後,我與一般建議去「..consider重命名的一些方法來減少超載的程度。這個建議雙去時,它的整個繼承層次。」泛型重載歧義
但我想了解更多的歧義(並看看我是否能保持超載!)
這些只是一些測試助手,以幫助殘留部分繁瑣的測試,可能需要各種風味的視圖模型首先處於某種有效或無效狀態。
我開始在兩個視圖模型上使用這些助手,它們沒有繼承關係,並且工作正常。
然後我決定另一個對於另一個用於ViewModelWrapper的過載,它是其他視圖模型類型的基類。所以編譯器抱怨說它不知道哪個擴展名用於VmWrapper的以前工作的子類。
這就是這種情況下的第三次重載和下面的代碼中的第一次。就像我暗示的那樣,我已經消除了過載,但是
有沒有人看到我會如何將這些工作保持爲重載?
乾杯,
Berryl
// SatVm
public static void MakeValid<TParentModel, TModel>(this ISatelliteVm<TParentModel, TModel> instance, IEntityValidator validator) {...}
// HubVm
public static void MakeValid<TParentModel>(this HubViewModel<TParentModel> instance, IEntityValidator validator, bool bValid = true)
where TParentModel : Entity { ... }
// VmWrapper
public static void MakeValid<TModel>(this ViewModelWrapper<TModel> instance, IEntityValidator validator) { ... }
這似乎是一個黑客,對不起。 – Adam