Avatar billede webcreator Nybegynder
07. oktober 2005 - 11:30 Der er 15 kommentarer og
1 løsning

Interface som argument i konstruktør

Hej eksperter.

Kan det virkelig passe, at jeg ikke kan bruge et interface som argument i en konstruktør?

Jeg har lavet et interface til min database-klasse. Jeg skaber således en instans af database-klassen, og vil nu sende et interface af database-klassen til en anden klasse. Men det giver mig flg. fejl :

Inconsistent accessibility: parameter type 'Server.IDatabase' is less accessible than method 'Server.Class.Constructor(Server.IDatabase)'

Kan I hjælpe mig på vej ?
Avatar billede arne_v Ekspert
07. oktober 2005 - 11:31 #1
nej
Avatar billede arne_v Ekspert
07. oktober 2005 - 11:31 #2
jeg tror der mangler et private keyword
Avatar billede perlund Nybegynder
07. oktober 2005 - 11:34 #3
ja - det lugter af noget rod med din accessor keywords.
Avatar billede webcreator Nybegynder
07. oktober 2005 - 11:35 #4
Hvor mener I at jeg skal angive 'private' ?


# Mit interface:

using System;

namespace Server
{
    interface IDatabase
    {
        void SqlTransaction(string sql);
    }
}

-----------------------------------------------------------------

# Min klasse der skal gøre brug af interfacet:

namespace Server
{
    public class Class
    {
        IDatabase idb;

        public Class(IDatabase db)
        {
            idb = db;
        }
    }
}

-----------------------------------------------------------------

#Skabelse af instans af klassen Class :

public void Test()
{
    Database db = new Database(div. parametre);
   
    Class cl = new Class((IDatabase)db);
}
Avatar billede webcreator Nybegynder
07. oktober 2005 - 11:38 #5
.. og min database-klasse implementerer selvfølgelig IDatabase :)
Avatar billede arne_v Ekspert
07. oktober 2005 - 11:40 #6
prøv:

public interface IDatabase
Avatar billede arne_v Ekspert
07. oktober 2005 - 11:40 #7
og jeg vil på det kraftigste fraråde at have en class ved navn Class
Avatar billede webcreator Nybegynder
07. oktober 2005 - 11:40 #8
Jamen dog. Ingen compiler fejl :) Tusind tak. jeg tester det lige igennem.
Avatar billede arne_v Ekspert
07. oktober 2005 - 11:41 #9
jeg tror at dem som skal bruge din klasse fra VB.NET kan få store problemer !
Avatar billede webcreator Nybegynder
07. oktober 2005 - 11:41 #10
Ja, naturligvis, hehe. Det var bare et eksempel. Klassen har skam et ganske sigende navn :)
Avatar billede perlund Nybegynder
07. oktober 2005 - 11:41 #11
hehe - god pointe arne :)
Avatar billede webcreator Nybegynder
07. oktober 2005 - 11:42 #12
Normalt bruger jeg bare intet-sigende/generiske navn her på Eksperten, da klassen "Record" eller "Hest" alligevel ikke given nogen større indsigt i projektet :)
Avatar billede arne_v Ekspert
07. oktober 2005 - 11:43 #13
vi er mange som bruger MyClass eller den klassiske Foobar
Avatar billede webcreator Nybegynder
07. oktober 2005 - 11:43 #14
Nå  ja, den vil jeg forsøge at huske fremover :)
Smider du et svar, arne ?
Avatar billede arne_v Ekspert
07. oktober 2005 - 11:47 #15
gerne
Avatar billede webcreator Nybegynder
07. oktober 2005 - 12:01 #16
Mange tak igen :)
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