From 2feff37bb86a6efa416b4e8670239ef85f17ecf1 Mon Sep 17 00:00:00 2001 From: samwherever Date: Fri, 7 Mar 2025 12:10:05 -0600 Subject: [PATCH 1/4] Fix for #45152 --- .../mixins-with-default-interface-methods.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/csharp/advanced-topics/interface-implementation/mixins-with-default-interface-methods.md b/docs/csharp/advanced-topics/interface-implementation/mixins-with-default-interface-methods.md index e1dded0371fd0..fe6d950b07ed0 100644 --- a/docs/csharp/advanced-topics/interface-implementation/mixins-with-default-interface-methods.md +++ b/docs/csharp/advanced-topics/interface-implementation/mixins-with-default-interface-methods.md @@ -116,11 +116,11 @@ The default implementation assumes no power: These changes compile cleanly, even though the `ExtraFancyLight` declares support for the `ILight` interface and both derived interfaces, `ITimerLight` and `IBlinkingLight`. There's only one "closest" implementation declared in the `ILight` interface. Any class that declared an override would become the one "closest" implementation. You saw examples in the preceding classes that overrode the members of other derived interfaces. -Avoid overriding the same method in multiple derived interfaces. Doing so creates an ambiguous method call whenever a class implements both derived interfaces. The compiler can't pick a single better method so it issues an error. For example, if both the `IBlinkingLight` and `ITimerLight` implemented an override of `PowerStatus`, the `OverheadLight` would need to provide a more specific override. Otherwise, the compiler can't pick between the implementations in the two derived interfaces. This situation is shown in the following diagram: +Avoid overriding the same method in multiple derived interfaces. Doing so creates an ambiguous method call whenever a class implements both derived interfaces. The compiler can't pick a single better method so it issues an error. For example, if both the `IBlinkingLight` and `ITimerLight` implemented an override of `Power()`, the `OverheadLight` would need to provide a more specific override. Otherwise, the compiler can't pick between the implementations in the two derived interfaces. This situation is shown in the following diagram: :::image type="content" source="./media/mixins-with-default-interface-methods/diamond-problem.svg" alt-text="illustration of the diamond problem with default interface methods"::: -The preceding diagram illustrates the ambiguity. `OverheadLight` doesn't provide an implementation of `ILight.PowerStatus`. Both `IBlinkingLight` and `ITimerLight` provide overrides that are more specific. A call to `ILight.PowerStatus` on an instance of `OverheadLight` is ambiguous. You must add a new override in `OverheadLight` to resolve the ambiguity. +The preceding diagram illustrates the ambiguity. `OverheadLight` doesn't provide an implementation of `ILight.Power()`. Both `IBlinkingLight` and `ITimerLight` provide overrides that are more specific. A call to `ILight.Power()` on an instance of `OverheadLight` is ambiguous. You must add a new override in `OverheadLight` to resolve the ambiguity. You can usually avoid this situation by keeping interface definitions small and focused on one feature. In this scenario, each capability of a light is its own interface; only classes inherit multiple interfaces. From 8804d244ec90358e0875436c33c2939644e25084 Mon Sep 17 00:00:00 2001 From: samwherever Date: Tue, 11 Mar 2025 12:25:31 -0500 Subject: [PATCH 2/4] Diagram fix --- .../diamond-problem.svg | 157 +++++++++++++++++- 1 file changed, 156 insertions(+), 1 deletion(-) diff --git a/docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond-problem.svg b/docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond-problem.svg index 02fceb3493b0f..2289816577847 100644 --- a/docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond-problem.svg +++ b/docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond-problem.svg @@ -1 +1,156 @@ -
« interface »
ILight
PowerStatus
« interface »
IBlinkingLight
PowerStatus
« interface »
ITimerLight
PowerStatus
OverheadLight
\ No newline at end of file + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Power() + « interface »ILight + « interface »ITimerLight + « interface »IBlinkingLight + Power() + Power() + OverheadLight + + + + + + \ No newline at end of file From 41665a5565dcc7e3183b0cb821e5d91c5e5fdcc5 Mon Sep 17 00:00:00 2001 From: samwherever Date: Mon, 31 Mar 2025 16:23:30 -0500 Subject: [PATCH 3/4] Rebuilt the diagram --- .../diamond_rebuild.png | Bin 0 -> 24865 bytes .../mixins-with-default-interface-methods.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond_rebuild.png diff --git a/docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond_rebuild.png b/docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond_rebuild.png new file mode 100644 index 0000000000000000000000000000000000000000..f4f192b051cc510c8a72ef80f65cfc457df6fca1 GIT binary patch literal 24865 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 Date: Tue, 1 Apr 2025 12:39:02 -0700 Subject: [PATCH 4/4] Fix image corruption.. Thanks github! --- ...iamond_rebuild.png => diamond-problem.png} | Bin .../diamond-problem.svg | 156 ------------------ .../mixins-with-default-interface-methods.md | 2 +- 3 files changed, 1 insertion(+), 157 deletions(-) rename docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/{diamond_rebuild.png => diamond-problem.png} (100%) delete mode 100644 docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond-problem.svg diff --git a/docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond_rebuild.png b/docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond-problem.png similarity index 100% rename from docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond_rebuild.png rename to docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond-problem.png diff --git a/docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond-problem.svg b/docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond-problem.svg deleted file mode 100644 index 2289816577847..0000000000000 --- a/docs/csharp/advanced-topics/interface-implementation/media/mixins-with-default-interface-methods/diamond-problem.svg +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Power() - « interface »ILight - « interface »ITimerLight - « interface »IBlinkingLight - Power() - Power() - OverheadLight - - - - - - \ No newline at end of file diff --git a/docs/csharp/advanced-topics/interface-implementation/mixins-with-default-interface-methods.md b/docs/csharp/advanced-topics/interface-implementation/mixins-with-default-interface-methods.md index 8f63d6c7ebc1a..e420e3dc527e4 100644 --- a/docs/csharp/advanced-topics/interface-implementation/mixins-with-default-interface-methods.md +++ b/docs/csharp/advanced-topics/interface-implementation/mixins-with-default-interface-methods.md @@ -118,7 +118,7 @@ These changes compile cleanly, even though the `ExtraFancyLight` declares suppor Avoid overriding the same method in multiple derived interfaces. Doing so creates an ambiguous method call whenever a class implements both derived interfaces. The compiler can't pick a single better method so it issues an error. For example, if both the `IBlinkingLight` and `ITimerLight` implemented an override of `Power()`, the `OverheadLight` would need to provide a more specific override. Otherwise, the compiler can't pick between the implementations in the two derived interfaces. This situation is shown in the following diagram: -:::image type="content" source="./media/mixins-with-default-interface-methods/diamond-rebuild.png" alt-text="illustration of the diamond problem with default interface methods"::: +:::image type="content" source="./media/mixins-with-default-interface-methods/diamond-problem.png" alt-text="illustration of the diamond problem with default interface methods"::: The preceding diagram illustrates the ambiguity. `OverheadLight` doesn't provide an implementation of `ILight.Power()`. Both `IBlinkingLight` and `ITimerLight` provide overrides that are more specific. A call to `ILight.Power()` on an instance of `OverheadLight` is ambiguous. You must add a new override in `OverheadLight` to resolve the ambiguity.