[C#] Partial Class variable niet in beide bestanden beschikb

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
Edit: vergeef mijn stomheid en hang me aan de paal der schande! :/ zie onder

Omdat de code waar aan ik momenteel werk wat groter wordt, en het toch handig blijft om dit in het de zelfde classe te houden wilde ik partial classes gaan implementeren, na wat uitzoeken ging ik ervan uit dat het volgende legaal zou zijn:

C#:
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
//Class1.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsApplication1
{
    public partial class Class1
    {
        private string lol = "LOL";  //ook public werkt niet.
    }
}

//Class2.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace WindowsApplication1
{
    public partial class Class1
    {
        lol += " nog een keer lol!";
    }
}


Maar somehow krijg ik het niet werkend, ik gebruik C# 2.0 (2005 Express Edition)
Na wat googlen kwam ik ook niets tegen (C# partial class variable unavailable).

Zou dit nu toch wel moeten kunnen? Is dit een restrictie in de Express Edition? Of hide partial classes juist expliciet die variabelen?

[ Voor 3% gewijzigd door roy-t op 24-02-2008 19:30 ]

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • AtleX
  • Registratie: Maart 2003
  • Niet online

AtleX

Tyrannosaurus Lex 🦖

Wat voor error krijg je? Waarom zet je regel 23 niet in een methode? Volgens mij mag je het zo niet doen namelijk.

Sole survivor of the Chicxulub asteroid impact.


Acties:
  • 0 Henk 'm!

  • Shift
  • Registratie: Augustus 2000
  • Laatst online: 16-06 11:48

Shift

[] Dual crazy []

Gebruik Get/Set methodes.

Acties:
  • 0 Henk 'm!

Verwijderd

AtleX schreef op zondag 24 februari 2008 @ 15:51:
Wat voor error krijg je? Waarom zet je regel 23 niet in een methode? Volgens mij mag je het zo niet doen namelijk.
Inderdaad, als je het buiten een methode wilt gebruiken (zoals de TS nu doet) dan gaat mijn VS 2005 zeuren dat hij een 'static' dataveld verwacht...(en zodra je dat dataveld dus static maakt werkt het wel).

Dus
- private static string lol = "LOL"; //ook public werkt niet.
of
- lol += " nog een keer lol!"; binnen een methode plaatsen.

[ Voor 15% gewijzigd door Verwijderd op 24-02-2008 16:01 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:56
En hoe moet dat het probleem oplossen :? (Trouwens, in C# heb je properties).

Zowiezo lijkt het me raar; de variable is onderdeel van de class, en al is je code over verschillende files gespreid (want dat is het gewoon, één class, gespreid over meerdere files), die variable maakt er deel van uit en moet je dus gewoon kunnen benaderen.

Welke compiler error krijg je ?
Jij krijgt het trouwens niet werkend omdat je die variable in een statement gebruikt gewoon binnen je class.

Wat jij nu doet in je code-voorbeeld is equivalent aan dit (zonder partial class):
code:
1
2
3
4
5
6
public class Class1
{
   private string melp = "blaat";

   melp += "bar";
}
Ook hier ga je een compiler error krijgen (invalid token in member declaration).

Als je echter dit doet (en nu wel met partial class):
code:
1
2
3
4
5
6
7
8
9
10
11
12
public partial Class1
{
   private string melp = "blaat";
}

public partial Class1
{
   public void DoSomething()
   {
       melp += "lol";
   }
}

[ Voor 37% gewijzigd door whoami op 24-02-2008 16:44 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Haan
  • Registratie: Februari 2004
  • Laatst online: 20:53

Haan

dotnetter

Ik zou als ik jou was toch kijken of je niet een en ander in verschillende klassen kan indelen, alles in één klasse proppen en die vervolgens over meerdere bestanden verdelen lijkt me niet echt de mooiste oplossing (en niet zo heel erg OO ;) )

Kater? Eerst water, de rest komt later


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 01:56
en het toch handig blijft om dit in het de zelfde classe te houden wilde ik partial classes gaan implementeren
Wat Haan eerder al zei, is ook wel correct.
Waarom alles in één class houden ?
Hoeveel "verantwoordelijkheden" heeft je class nu ?
't Is misschien een idee dat je eens iets leest over bv het single responsability principle.

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 08-09 11:33
|:( |:( |:( |:( |:(
AH Doh!

Ik wilde het snel even testen en daarom had ik even een ontzettend dom iets gedaan! Ik zat in mijn class en niet in een method. *iemand sla mij*

Doh doh doh!

@ Whoami en Haan

Ik ben semi bekend met dit principe, en mijn class heeft ook maar 1 enkele responsability:
Het ophalen van informatie uit een database.

Maar ik heb al ongeveer 9 verschillend geoverloade methods om op een bepaalde manier een select query uit te voeren.

Ik heb het liefst dat een from maar 1 object hoeft aan te maken om dingen uit en in de database te zetten, daarom kwam ik op het idee om een algemeen bestand te maken, een update deel, een select deel en een insert deel.

Op die manier blijft de code overzichtelijk, terwijl ik toch de globale ODBC connectie die in het object wordt gestopt kan gebruiken.

Wel weer een ontzettend domme fout van me! Hmm... Maargoed an die arbeit!

~ Mijn prog blog!

Pagina: 1