Autor Beitrag
Chris1011111
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 15.11.11 15:17 
Hallo,

wie gesagt, ich habe ein Problem:
ich möchte eine Instanzvariable vom Typ System.Collections.Generic.List<> der Klasse "Sector" in der anderen Klasse "OwnUnits" verwenden:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
public class OwnUnits
    {
        // ...

        public void Move_Units()
        {

            // ...

                foreach (Sector sector in Game1.sectors.sectors_list)        // Hier wird der Fehler angezeigt
                {
                    for (int i = 0; i < 8; i++)
                    {
                        if (sector.position == unit.able_sectors_to_move[i])
                        {
                            sector.move_marked = true;
                            if (mouse.LeftButton == ButtonState.Pressed)
                            {
                                unit.position = sector.position;
                            }
                        }
                        else sector.move_marked = false;
                    }
                }
            }
        }
    }

Da bekomme ich jedoch immer den Fehler: "Zugriff aufgrund der Sicherheitsebene nicht möglich.", obwohl die Klasse Sector "public" ist:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
public class Sectors
    {
        List<Sector> sectors_list = new List<Sector>();

        // ...
    }



Ich habe jetzt schon viel zu diesem Thema gegoogelt und hier im Forum habe ich auch einige Posts gelesen, in denen ein ähnliches Problem geschildert war. Das konnte mein Problem jedoch nicht lösen.


Gruß, Chris1011111
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 15.11.11 15:46 
sectors_list ist private da die Default Sichtbarkeit eben private ist.
Ich würde dir empfehlen, auch wenn man das darf, nie die Sichtbarkeit wegzulassen sondern immer explizit anzugeben.
Chris1011111 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 15.11.11 15:56 
Ok, vorher hatte ich sectors_list auch auf "public"
ausblenden C#-Quelltext
1:
public List<Sector> sectors_list = new List<Sector>();					

aber da im dieser Zeile immer der Fehler:
" Inkonsistenter Zugriff: Feldtyp "System.Collections.Generic.List<Sector>" ist weniger zugreifbar als Feld "Sectors.sectors_list". "
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 15.11.11 16:10 
Dann ist die Sector Klasse vermutlich nicht public sondern ebenfalls weniger sichtbar. Es hilft ja nicht ein public Feld zu haben das einen Typ liefert den man dann nicht benutzen darf weil dieser z.B. wiederum private ist.

Für diesen Beitrag haben gedankt: Chris1011111
Chris1011111 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 15.11.11 16:22 
Ohje, ja das wars. Die Sector-Klasse hatte ich ganz übersehen. Manchmal ist man echt blind!
Aber in Zukunft werde ich auf so etwas acht geben.

Vielen Dank für deine Hilfe :D

Gruß, Chris1011111