Extend Sealed Class in C# Using Extension Method - A Simple Approach
Here we will extend sealed class in C# using extension method.
Requirement - What is sealed. Can we derive this? If yes, then how we can achieve this?
Friends this is one of the possible situation which you may confront in your daily need or may be in an interview. Let’s dive it into in practical way.
Sealed classes are used to restrict the inheritance feature of object oriented programming. Once a class is defined as a sealed class, the class cannot be inherited.
In C#, the sealed modifier is used to define a class as sealed. In Visual Basic .NET theNotInheritable keyword serves the purpose of sealed. If a class is derived from a sealed class then the compiler throws an error.
Sealed Methods and Properties
You can also use the sealed modifier on a method or a property that overrides a virtual method or property in a base class. This enables you to allow classes to derive from your class and prevent other developers that are using your classes from overriding specific virtual methods and properties.
Here we are not directly extending the functionality using the inheritance feature. We can achieve this with help of an extension method. The following is the code declaration with practical hands on.
Note: You should have knowledge of extension method in order to implement this.
1: public sealed class DotnetPiper2: {3: public DotnetPiper()4: {5: Console.WriteLine("D Class Constructor called!");6: }7: public void DotnetPiperInstanceMethod()8: {9: Console.WriteLine("DotnetPiper is Called!");10: }11: }12: public class DotnetPiperExtension : DotnetPiper13: {14:15: }
As soon as we build our solution we will get the following error:
Error 1 'OOPS_App.DotnetPiperExtension': cannot derive from sealed type,
I have created an extension class which keeps a method to extend the functionality of sealed class.
Please have a look at the following image:1: public static class DotnetPiperExtension2: {3: public static string DotnetPiperExtentionMethod(this DotnetPiper objDotnet, string str)4: {5: return "Welcome to the World of DotNet....Mr. " + str;6: }7: }
Here I am calling an extension method in main class:
1: class Program2: {3: static void Main(string[] args)4: {5: DotnetPiper dp = new DotnetPiper();6: string nameStr = dp.DotnetPiperExtentionMethod("Sachin Kalia");7: Console.WriteLine(nameStr);8: Console.ReadLine();9: }10: }
Output:
Complete code for hands on:
1: {2: public DotnetPiper()3: {4: Console.WriteLine("D Class Constructor called!");5: }6: public void DotnetPiperInstanceMethod()7: {8: Console.WriteLine("DotnetPiper is Called!");9: }10: }11:12:13: public static class DotnetPiperExtension14: {15: public static string DotnetPiperExtentionMethod(this DotnetPiper objDotnet, string str)16: {17: return "Welcome to the World of DotNet....Mr. " + str;18: }19: }20:21:22: class Program23: {24: static void Main(string[] args)25: {26: DotnetPiper dp = new DotnetPiper();27: string nameStr = dp.DotnetPiperExtentionMethod("Sachin Kalia");28: Console.WriteLine(nameStr);29: Console.ReadLine();30:31: }32: }
Note: It might be one of the FAQ in an interview.
Note: Please share you opinion and advise us for better approach also.I really appreciate you initiation
To know more MVC and WebApi Kindly go through with these links
MVC Articles & WCF and WebApi
Thanks.
Enjoy coding and reading
0 comments :
Post a Comment