Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 02:55

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



C# (.net allgemein) property changed?

Discussion on C# (.net allgemein) property changed? within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
C# (.net allgemein) property changed?

also mein problem ist das folgende, angenommen ich habe die folgende klasse:
PHP Code:
class MeineKlasse
{
    public 
String MeinText {getset;}

ich will nun gerne, dass immer wenn "MeinText" geändert wird ich eine ausgabe erhalte, das könnte man natürlich so machen:
PHP Code:
class MeineKlasse
{
    private 
String _MeinText;
    public 
String MeinText 
    
{
        
get
        
{
            return 
this._MeinText;
        }
        
set
        
{
            
Console.WriteLine("der Wert wurde auf " value " geändert")
            
this._MeinText value;
        }

nun ist mir das aber zu umständlich gerade wenn ich sehr viele solcher Properties habe die dich "überwachen" will. Weiss jmd wie es einfacher geht?
was ich im Grunde gerne hätte ware ein lösung mit Attributen, also so ungefähr:
PHP Code:
class MeineKlasse
{
    [
PrintOnChanged()]
    public 
String MeinText {getset;}

,dass ich dann eine klasse "PrintOnChangedAttribute" schreiben müsste wär ein geringes problem wenn es ginge. weiss jmd ob sowas möglich ist?
nkkk is offline  
Old 01/17/2011, 12:12   #2
 
-AmA-'s Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 728
Received Thanks: 460
Code:
class Program
{
    public Program()
    {
        MeineKlasse test = new MeineKlasse(1);
        test.ChangedHandlers += new MeineKlasse.Changed(this.UeberwachungsMethode);
        Console.WriteLine("Text wird gewechselt");
        test.Change("neuer Text");
        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();
        }
    }

    protected void OnChanged()
    {
        Changed temp = ChangedHandlers;

        if (null != temp)
        {
            temp(_ID, _MeinText);
        }
    }
}
ich würds so machen
-AmA- is offline  
Old 01/17/2011, 12:30   #3
 
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
Quote:
Originally Posted by -AmA- View Post
Code:
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;
        }[COLOR=RED]
        //bearbeitet
        set
        {
            _MeinText = value;
            OnChanged();
        }[/COLOR]

    }

    protected void OnChanged()
    {
        Changed temp = ChangedHandlers;

        if (null != temp)
        {
            temp(_ID, _MeinText);
        }
    }
}
ich würds so machen
hmm aber dan muss ich immernoch für jede Property eine set mthode schreibe, was wenn man viele properties in vielen verschiedenen klassen hat sehr umständlich ist. Ob man die set mathode jetzt in "Change" umbenennt ist ja im grunde egal.
nkkk is offline  
Old 01/17/2011, 13:01   #4
 
-AmA-'s Avatar
 
elite*gold: 0
Join Date: Dec 2007
Posts: 728
Received Thanks: 460
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:

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...
-AmA- is offline  
Reply


Similar Threads Similar Threads
Someone Unpack property and psyco?
08/06/2010 - Metin2 - 0 Replies
I cant unpack files property and psyco. Someone can help me and maybe upload unpacked files? Thanks for help. Klopek.
Unpack property and psyco
08/05/2010 - Metin2 Private Server - 0 Replies
I cant unpack files property and psyco. Someone can help me and maybe upload unpacked files? Thanks for help. Klopek.
Missing Property for Key
07/21/2010 - Lineage 2 - 0 Replies
I've tried everything i could imagine and its still not working... http://img715.imageshack.us/img715/5708/41002479. png And yes i do have the c3p0 in my libs folder.
Summons changed 1-3,Potions changed 4-9
06/28/2008 - General Gaming Discussion - 11 Replies
hello ever tired of pressing multiple keys to summon cell and sick of it? now here`s the all in one solution. Go to =C:\Program Files\Softnyx\Rakion\ControlsSV and replace the file. the original one is the change back if u dont like it. thanks will be apprreciated.:)



All times are GMT +1. The time now is 02:56.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.