Cómo extender una clase sellada: se necesita una explicación simple del progtwig y su uso en tiempo real

Gente

Tengo una clase sellada de la siguiente manera. Quiero extender esta clase sellada para agregar un método que devuelva el promedio de x e y. Este no es solo el método de extensión que utiliza “this” 🙁 ¿Podría alguien ayudarme a entender el concepto de “Extending Sealed class” y su “Uso en tiempo real y beneficios”?

class Sealed A { int a; int b; int Add (int x, int y) { return x+y; } } 

Gracias….

Como @ReedCopsey ya ha señalado, la forma de ampliar la funcionalidad de una clase sellada es con un Método de Extensión . Aquí hay uno que hará lo que estás pidiendo:

 public sealed class MyClass { int a; int b; int Add (int x, int y) { return x + y; } } public static class MyClassExtensions { public static decimal Average(this MyClass value, int x, int y) { return (x + y)/2M; } } 

Uso:

  var myClass = new MyClass(); // returns 15 var avg = myClass.Average(10, 20); 

EDITAR Según lo solicitado, aquí está el código completo. Cree una nueva aplicación de consola en Visual Studio, reemplace todo el código en el archivo Program.cs con el siguiente código y ejecute.

 using System; namespace ConsoleApplication1 { public sealed class MyClass { public int X { get; private set; } public int Y { get; private set; } public MyClass(int x, int y) { this.X = x; this.Y = y; } int Add() { return this.X + this.Y; } } public static class MyClassExtensions { public static decimal Average(this MyClass value) { return (value.X + value.Y) / 2M; } } class Program { static void Main(string[] args) { var myClass = new MyClass(10, 20); var avg = myClass.Average(); Console.WriteLine(avg); Console.ReadLine(); } } } 

¿Podría alguien ayudarme, por favor, a comprender el concepto de “Extender la clase sellada” y su “Uso y beneficios en tiempo real”?

El concepto básico es que una clase sellada significa que no puede subclasificarla (extenderla). Esta es la razón por la que la clase está sellada , esto “sella” a la clase por lo que no se puede extender.

Los métodos de extensión le permiten crear un método que parece extender la clase, pero en realidad es un método estático normal. El comstackdor llama a este método y pasa la instancia de clase.