Found 2628 Articles for Csharp

What is Interface segregation principle and how to implement it in C#?

Nizamuddin Siddiqui
Updated on 25-Nov-2020 12:16:41

308 Views

Clients should not be forced to depend upon interfaces that they don't use.The Interface Segregation Principle states that clients should not be forced to implement interfaces they don't use.Instead of one fat interface many small interfaces are preferred based on groups of methods, each one serving one submoduleBefore Interface SegregationExamplepublic interface IProduct {    int ID { get; set; }    double Weight { get; set; }    int Stock { get; set; }    int Inseam { get; set; }    int WaistSize { get; set; } } public class Jeans : IProduct {    public int ID { ... Read More

What is Facade and how to implement in C#?

Nizamuddin Siddiqui
Updated on 25-Nov-2020 12:14:49

112 Views

The Facade pattern is a simple structure laid over a more complex structure.The ParticipantsThe Subsystems are any classes or objects which implement functionality but can be "wrapped" or "covered" by the Facade to simplify an interface.The Facade is the layer of abstraction above the Subsystems, and knows which Subsystem to delegate appropriate work to.The Facade pattern is so general that it applies to almost every major app especially those where I couldn't refactor or modify pieces of said apps for various reasons.Examplepublic class HomeFacade {    LightsFacade light;    MusicSystemFacade musicSystem;    AcFacade ac;    public HomeFacade() {     ... Read More

What is Liskov Substitution principle and how to implement in C#?

Nizamuddin Siddiqui
Updated on 25-Nov-2020 12:12:32

241 Views

Derived types must be completely substitutable for their base types.Definition:We should be able to treat a child class as though it were the parent class. Essentially this means that all derived classes should retain the functionality of their parent class and cannot replace any functionality the parent provides.Before Liskov Substitutionpublic class Ellipse {    public double MajorAxis { get; set; }    public double MinorAxis { get; set; }    public virtual void SetMajorAxis(double majorAxis){       this.MajorAxis = majorAxis;    }    public virtual void SetMinorAxis(double minorAxis){       this.MajorAxis = minorAxis;    }    public ... Read More

Why singleton class is always sealed in C#?

Nizamuddin Siddiqui
Updated on 25-Nov-2020 12:08:03

1K+ Views

The sealed keyword means that the class cannot be inherited from. Declaring constructors private means that instances of the class cannot be created.You can have a base class with a private constructor, but still inherit from that base class, define some public constructors, and effectively instantiate that base class.Constructors are not inherited (so the derived class won't have all private constructors just because the base class does), and that derived classes always call the base class constructors first.Marking the class sealed prevents someone from trivially working around your carefully-constructed singleton class because it keeps someone from inheriting from the class.Examplestatic ... Read More

How to get all the files, sub files and their size inside a directory in C#?

Nizamuddin Siddiqui
Updated on 25-Nov-2020 12:05:22

1K+ Views

To get the files, C# provides a method Directory.GetFilesDirectory.GetFiles returns the names of all the files (including their paths) that match the specified search pattern, and optionally searches subdirectories.In the below example * is matches Zero or more characters in that position.SearchOption TopDirectoryOnly. Searches only the top directoriesSearchOption AllDirectories .Searches all the top directories and sub directoriesFileInfo gets the file information like Length, nameExample 1static void Main (string[] args) {    string rootPath = @"C:\Users\Koushik\Desktop\TestFolder";    var files = Directory.GetFiles(rootPath, "*.*", SearchOption.AllDirectories);    foreach (string file in files) {       Console.WriteLine(file);    }    Console.ReadLine (); }OutputC:\Users\Koushik\Desktop\TestFolder\TestFolderMain\TestFolderMain.txt ... Read More

How to implement IDisposable Design Pattern in C#?

Nizamuddin Siddiqui
Updated on 25-Nov-2020 12:03:45

2K+ Views

We should use an IDisposable design pattern (or Dispose Pattern) when we need to dispose of unmanaged objects.For implementing the IDisposable design pattern, the class which deals with unmanaged objects directly or indirectly should implement the IDisposable interface.And implement the method Dispose declared inside of the IDisposable interface. We do not directly deal with unmanaged objects. But we deal with managed classes, which deals directly with unmanaged objects. For example, File handlers, connection string, HTTP streams, etc.Important aspect of this pattern is that it makes easier for inherited classes to follow the IDisposable design pattern. And it is because of ... Read More

How to implement Null object Pattern in C#?

Nizamuddin Siddiqui
Updated on 25-Nov-2020 12:00:25

113 Views

The null object pattern helps us to write a clean code avoiding null checks where ever possible. Using the null object pattern, the callers do not have to care whether they have a null object or a real object. It is not possible to implement null object pattern in every scenario. Sometimes, it is likely to return a null reference and perform some null checks.Examplestatic class Program{    static void Main(string[] args){       Console.ReadLine();    }    public static IShape GetMobileByName(string mobileName){       IShape mobile = NullShape.Instance;       switch (mobileName){         ... Read More

What is connection pooling in C# and how to achieve it?

Nizamuddin Siddiqui
Updated on 25-Nov-2020 11:56:02

691 Views

These are used to import namespaces (or create aliases for namespaces or types).These go at the top of the file, before any declarations.using System; using System.IO; using WinForms = global::System.Windows.Forms; using WinButton = WinForms::Button;The using statement ensures that Dispose() is called even if an exception occurs when you are creating objects and calling methods, properties and so on. Dispose() is a method that is present in the IDisposable interface that helps to implement custom Garbage Collection. In other words, if we are doing some database operation (Insert, Update, Delete) but somehow an exception occurs, then here the using statement closes ... Read More

How do I get a human-readable file size in bytes abbreviation using C#?

Nizamuddin Siddiqui
Updated on 25-Nov-2020 11:54:27

361 Views

To get the directories C# provides a method Directory.GetDirectoriesDirectory.GetDirectories returns the names of the subdirectories (including their paths) that match the specified search pattern in the specified directory, and optionally searches subdirectories.To get the files, C# provides a method Directory.GetFilesDirectory.GetFiles returns the names of all the files (including their paths) that match the specified search pattern, and optionally searches subdirectoriesTo get the file length , C# provides a property LengthExamplestatic void Main(string[] args) {    string rootPath = @"C:\Users\Koushik\Desktop\TestFolder";    var files = Directory.GetFiles(rootPath, "*.*", SearchOption.AllDirectories);    foreach (string file in files) {       long size = ... Read More

How to catch an exception thrown by an async void method in C#?

Nizamuddin Siddiqui
Updated on 25-Nov-2020 11:53:15

765 Views

In synchronous C# code, the exceptions are propagated up the call stack until they reach an appropriate catch block that can handle the exception. However, exception handling in asynchronous methods is not as straightforward.An asynchronous method in C# can have three types of return value: void, Task, and Task. When an exception occurs in an async method that has a return type of Task or Task, the exception object is wrapped in an instance of AggregateException and attached to the Task object.If multiple exceptions are thrown, all of them are stored in the Task object.Example 1static async Task Main(string[] args) ... Read More

Advertisements