Avatar billede codecow Nybegynder
17. maj 2005 - 11:47 Der er 9 kommentarer og
1 løsning

Overload af delegate funktion

Hej.

Jeg har en ADO.NET database kørende som en service, som der bliver fyldt noget data i af eksterne programmer.

Klienterne, som bruger servicen, har en callback funktion ( delegate ) som bliver kaldt når der er noget nyt data i databasen. Men da der mange forskellige objekter som kan eksistere i databasen vil jeg gerne kunne overloade delegate funktionen. dvs så jeg kan skrive:

    public delegate void Callback( string field, UpdateArray arrUpdate );
    public delegate void Callback( string field, UpdateObject objUpdate );

istedet for, som virker men ikke er særligt elegant:
    public delegate void CallbackArray( string field, UpdateArray arrUpdate );
    public delegate void CallbackObject( string field, UpdateObject objUpdate );

Er der en måde at overloade delegate på ?
Hvis jeg laver ovenstående får jeg at vise at der allerede er en Callback i namespacet.
Avatar billede nielle Nybegynder
17. maj 2005 - 15:04 #1
Nej, det kan du formentlig ikke. Men du kan lave noget lignende ved at flytte funktionaliteten ned i selve din Callback-metode:

using System;

namespace Eksperten
{
    class UpdateArray
    {
    }

    class UpdateObject
    {
    }

    class App
    {
        public delegate void Callback( string field, object Update );

        [STAThread]
        static void Main(string[] args)
        {
            Callback CB = new Callback(MyCallback);

            CB("blah-blah", new UpdateArray());
            CB("blah-blah", new UpdateObject());
        }

        public static void MyCallback( string field, object Update )
        {
            if (Update is UpdateArray)
                Console.WriteLine("Update = UpdateArray");

            if (Update is UpdateObject)
                Console.WriteLine("Update = UpdateObject");
        }
    }
}
Avatar billede codecow Nybegynder
18. maj 2005 - 01:49 #2
Smart :)

Det tossede er at jeg bruger noget ligende i UpdateArray og UpdateObject, men det slog mig ikke lige at bruge det her.

Smid et svar, og tak for hjælpen.
Avatar billede nielle Nybegynder
18. maj 2005 - 06:48 #3
Svar :^)
Avatar billede Syska Mester
18. maj 2005 - 08:18 #4
Lader til at vi har fået en Arne nummer 2 :-)
Avatar billede nielle Nybegynder
18. maj 2005 - 10:32 #5
Svar :^)

Er arne_v da lige så slem til at glemme at trykke på "Svar"?! ;^?
Avatar billede codecow Nybegynder
18. maj 2005 - 10:35 #6
:D
Avatar billede Syska Mester
18. maj 2005 - 10:35 #7
nej, han kan bare svare på alt, ligesom jeg snart har lagt mærke til at du kan her på det sidste :-)
Avatar billede nielle Nybegynder
18. maj 2005 - 12:50 #8
Jeg ved meget ... men godt nok ikke så meget som arne_v! Han er simpelthen for rå! :^)

Men takker ellers for sammenligningen ;^)
Avatar billede Syska Mester
18. maj 2005 - 13:42 #9
tjaa, så må du lige være begyndt her på eksperten, for jeg har da aldrig set dig i C# kategorien før, eller kan jeg måske ikke huske det...
Men velkommen til.
Er her mest for at lære
Avatar billede nielle Nybegynder
18. maj 2005 - 18:18 #10
Jeg opdagede Eksperten helt tilbage i medio '03, men den gang var jeg mest aktiv i html- og ASP-kategorierne. Så gik den af forskellige grunde lidt i glemmebogen, men nu har jeg så genopdaget den igen. I mellem tiden er jeg så skiftet til C#.

Jeg er her for at hjælpe, men også for at blive udsat for de problemstillinger jeg ikke ellers ville have kastet mig over. Så ja, den med at lære kan jeg sagtens skrive under på. :^)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester