Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Explicit Interface Implementation in C#
📖 Scenario: Imagine you are building a simple system where a device can perform different actions depending on the interface it implements. Sometimes the device needs to show different behavior for the same method name depending on the interface used.
🎯 Goal: You will create two interfaces with the same method name, then implement them explicitly in a class. Finally, you will call these methods through interface references to see the different outputs.
📋 What You'll Learn
Create two interfaces named IPrinter and IScanner each with a method void Start().
Create a class named MultiFunctionDevice that implements both interfaces explicitly.
Implement Start() method for IPrinter to print "Printer starting...".
Implement Start() method for IScanner to print "Scanner starting...".
Create instances of MultiFunctionDevice and call Start() through IPrinter and IScanner references.
Print the outputs exactly as specified.
💡 Why This Matters
🌍 Real World
Explicit interface implementation is useful when a device or component supports multiple protocols or behaviors that share method names but need different implementations.
💼 Career
Understanding explicit interface implementation is important for designing clean, maintainable code in large C# projects, especially when working with APIs or frameworks that require multiple interface implementations.
Progress0 / 4 steps
1
Create interfaces IPrinter and IScanner
Create two interfaces named IPrinter and IScanner. Each interface should have a method declaration void Start().
C Sharp (C#)
Hint
Use the interface keyword to define interfaces. Each interface should declare a method void Start(); without a body.
2
Create class MultiFunctionDevice implementing both interfaces
Create a class named MultiFunctionDevice that implements both IPrinter and IScanner interfaces explicitly. Implement Start() for IPrinter to print "Printer starting..." and for IScanner to print "Scanner starting...".
C Sharp (C#)
Hint
Use explicit interface implementation syntax: void IPrinter.Start() and void IScanner.Start() inside the class.
3
Create instances and call Start() via interface references
Create an instance of MultiFunctionDevice named device. Create two variables: printer of type IPrinter and scanner of type IScanner, both referencing device. Call Start() on printer and scanner.
C Sharp (C#)
Hint
Assign the device instance to interface variables and call Start() on each to see different outputs.
4
Print the outputs from explicit interface calls
Run the program and print the outputs from calling Start() on printer and scanner. The output should be exactly: Printer starting... Scanner starting...
C Sharp (C#)
Hint
Run the program to see the two lines printed exactly as shown.
Practice
(1/5)
1. What is the main purpose of explicit interface implementation in C#?
easy
A. To separate methods with the same name from different interfaces
B. To make interface methods public by default
C. To allow interface methods to be called without casting
D. To override base class methods automatically
Solution
Step 1: Understand interface method conflicts
When a class implements multiple interfaces with methods of the same name, explicit implementation helps separate them.
Hint: Explicit methods use interface name before method [OK]
Common Mistakes:
Adding public modifier to explicit method
Placing interface name after method name
Using invalid syntax like 'void Show() IExample'
3. What will be the output of the following code?
interface IA { void Display(); }
interface IB { void Display(); }
class Test : IA, IB {
void IA.Display() { Console.WriteLine("IA Display"); }
void IB.Display() { Console.WriteLine("IB Display"); }
}
var obj = new Test();
// obj.Display(); // Line A
((IA)obj).Display();
((IB)obj).Display();
medium
A. Compilation error at Line A
B. IA Display\nIB Display
C. IB Display\nIA Display
D. Runtime error
Solution
Step 1: Understand explicit interface calls
Explicit interface methods cannot be called directly on the class object, so obj.Display() causes error if uncommented.
Step 2: Check interface casts and calls
Casting to IA calls IA.Display() printing "IA Display"; casting to IB calls IB.Display() printing "IB Display".
Final Answer:
IA Display
IB Display -> Option B
Quick Check:
Explicit calls via interface = correct output [OK]
Hint: Call explicit methods only via interface cast [OK]
Common Mistakes:
Trying to call explicit method directly on class object
Mixing output order
Expecting runtime errors instead of compile errors
4. Identify the error in the following code snippet implementing explicit interface method:
interface IAlpha { void Run(); }
class Beta : IAlpha {
public void IAlpha.Run() {
Console.WriteLine("Running");
}
}
medium
A. Explicit interface method cannot have public modifier
B. Method name must be different from interface
C. Interface name should not be used in method implementation
D. Missing override keyword
Solution
Step 1: Check explicit implementation rules
Explicit interface methods must not have access modifiers like public; they are implicitly private.
Step 2: Identify error in code
The code uses public void IAlpha.Run(), which is invalid syntax for explicit implementation.
Final Answer:
Explicit interface method cannot have public modifier -> Option A
Quick Check:
Explicit methods = no public keyword [OK]
Hint: Remove public from explicit interface methods [OK]
Common Mistakes:
Adding public modifier to explicit methods
Confusing explicit with normal method override
Forgetting interface name in method signature
5. Given two interfaces IX and IY both having method Process(), how can a class Worker implement both explicitly and allow calling Process() without casting?
hard
A. Use inheritance instead of interfaces
B. Implement explicit methods only, no public method needed
C. Implement only one interface explicitly and the other implicitly
D. Implement explicit methods and add a public method calling one interface method
Solution
Step 1: Understand explicit implementation limits
Explicit interface methods are accessible only via interface references, not directly on class objects.
Step 2: Provide public method to call explicit method
To call Process() without casting, class must have a public method that internally calls one explicit interface method.
Final Answer:
Implement explicit methods and add a public method calling one interface method -> Option D
Quick Check:
Public wrapper calls explicit method = direct access [OK]
Hint: Add public method calling explicit interface method [OK]
Common Mistakes:
Expecting explicit methods callable without casting