Como @ReedCopsey ya ha señalado, la forma de ampliar la funcionalidad de una clase sellada es con un Extension Method. Aquí está uno que va a hacer lo que están 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 a lo solicitado, aquí es el todo el código. 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 ejecútelo.
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();
}
}
}
Stack Overflow no es un sustituto de un libro o tutorial. Y, es decir, todo el punto * sellado * es que no puedes extenderlo. –
¿no es esto un oxímoron? – Didaxis
@AnthonyPegram - ¿Sobrevivir sin WSOIN? – Oded