[c#]anonymous delegates casting

Pagina: 1
Acties:

  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

Topicstarter
Ik heb een vraagje voor de .NET2.0 guru's :

ik heb een base class voor mijn business objects, en diverse andere classes, die er als volgt uit zien :
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
public delegate bool BusinessRuleDelegate();

public class BusinessObject:IDataErrorInfo,IEditableObject 
{ 
        ...
        public void CheckRule(BusinessRuleDelegate brd, string message)
        {
           // implementeer IDataErrorInfo bij brd() = false;
           // vertaal errors etc
            ...
        }

}


in mijn implementatie ziet er dit dan als volgt uit :
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class TestClass : BusinessObject
    {
        private string name;

        public string Name
        {
            get { return name; }
            set {
                CheckRule(delegate(){return value != "Tom";},"Naam mag niet 'Tom' zijn");
                ...
                name = value; 
            }
        }
    }


Bij het toekennen v/d properties, word dan de IErrorprovider aangevuld dmv CheckRule
Wat ik mij nu afvraag : kan ik die lelijke cast 'delegate()' niet op een of andere manier laten vallen, of kan je niet zonder bij het gebruik van anonieme delegates ?
Ik zou natuurlijk ook als volgt kunnen werken :
C#:
1
CheckRule(value != "Tom","Naam mag niet 'Tom' zijn");

maar dan kan ik geen uitgebreidere checks maken

Iemand ?

Op het net vind ik dit in elk geval nergens terug.
Ik zou er van uitgaan dat de compiler altijd een type check doet bij deze, dus zou het mij persoonlijk logisch lijken dat de compiler @compile-time checkt of het gaat om het type BusinessRuleDelegate, en de cast dus bijgevolg overbodig wordt, of heb ik het hier verkeerd ?

Weet er iemand een betere/propere manier om je business rules duidelijk gescheiden te houden in je business objects ?

  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

Topicstarter
ok, vergeet dit topic; ik zat nl structureel fout; ik heb ondertussen al een oplossing gevonden.

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Post de oplossing dan ook even dan hebben andere mensen die die fout maken er ook wat aan

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • D4Skunk
  • Registratie: Juni 2003
  • Laatst online: 20-10-2025

D4Skunk

Kind of Blue

Topicstarter
ik heb een generic template gemaakt die objecten checkt, IDataErrorInfo en IEditableObject implementeert dmv die delegates & serialisation. Alles gebeurt nu rechtsreeks op een dataset.

Het nadeel van deze aanpak is dat er geen compile-time check is tussen het datamodel en de programma-code, maar daar kan ik wel mee leven...

Het is misschien niet zo'n elegante & theoretische aanpak, maar voor mij istie wel snel en overzichtelijk. 8)