Du kanst dir die Arbeit der Property nicht abnehmen... das geht nicht...
Was aber in diesem Beispiel vorhanden ist, ist die dynamik...
Wenn du diese Klasse weitervererbst kanst du beliebig viele Objekte mit einem Zeiger auf eine beliebige Methode machen, dies nützt dir vorallem beim Auswerten und es ist übersichtlicher.
Ich habe den Code noch ein bischen verändert:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
static class Start
{
static void Main()
{
Program go = new Program();
}
}
class Program
{
public Program()
{
MeineKlasse test = new MeineKlasse(5);
test.ChangedHandlers += new MeineKlasse.Changed(this.UeberwachungsMethode);
Console.WriteLine("Text wird gewechselt");
test.Change("neuer Text");
Console.ReadLine();
A test2 = new A(2);
test2.ChangedHandlers += new A.Changed(this.UeberwachungsMethode);
Console.WriteLine("Text wird gewechselt");
test2.MeinText2 = "test";
Console.ReadLine();
}
public void UeberwachungsMethode(int id, string text)
{
Console.WriteLine(id.ToString() + text);
}
}
class MeineKlasse
{
private String _MeinText;
private int _ID;
public delegate void Changed(int id, string text);
public event Changed ChangedHandlers;
public MeineKlasse(int ID)
{
_ID = ID;
}
public String MeinText
{
get
{
return this._MeinText;
}
}
public void Change(string text)
{
if (text != _MeinText)
{
_MeinText = text;
OnChanged(_MeinText);
}
}
protected void OnChanged(string changed)
{
Changed temp = ChangedHandlers;
if (null != temp)
{
temp(_ID, changed);
}
}
}
}
Nun kanst du bei jedem Property das du neu erstellen wilst, einfach den Text übergeben der danach angezeigt wird. Kürzer gehts nicht
Code:
class A : MeineKlasse
{
public A(int ID)
: base(ID)
{
}
private String _MeinText2;
public String MeinText2
{
get
{
return this._MeinText2;
}
set
{
_MeinText2 = value;
OnChanged(_MeinText2);
}
}
}
Und wenn das so schlimm ist, dan öffne notepad, füge den Text ein, ersetze MeinText2 durch den namen deines neuen Property, wechsle den datentyp(wenn du wilst)und den namen der Klasse...