Heren (en dames) ontwikkelaars,
Ik ben inmiddels al anderhalve dag bezig met een probleem waar ik niet uit kom en waarvan ik niet begrijp waarom het doet wat het doet.
De situatie is als volgt: ik wil vanuit code-behind bestanden (JavaScript/CSS) toevoegen aan een pagina en heb daarvoor een extensie geschreven die dit regelt. De extensie accepteert een parameters array van het type EFile.
In deze klasse EFile zijn diverse statische instanties opgenomen die aangeroepen kunnen worden. Een instantie van EFile beschikt over een string FileContent, met daarin de inhoud van het bestand en een List<EFile> Dependencies die een lijst bevat van andere EFiles, waarvan de instantie afhankelijk is.
Als ik vervolgens een meegegeven instantie van EFile uitlees binnen de extensie, dan bevat de lijst Dependencies wel het aantal objecten dat ik verwacht, maar alle objecten zijn dan null en ik begrijp niet waarom.
Hieronder volgt code ter verduidelijking en als voorbeeld:
De aanroep van de extensie. Als voorbeeld wil ik hier dus de bestanden die behoren bij EFile.ImageUpload toevoegen aan de pagina:
De klasse EFile, waar de statische instanties staan beschreven. In het geval van ImageUpload betekent dit dus dat deze 2 afhankelijkheden heeft, namelijk naar JQueryJCrop en JQueryJColor.
De extensie zelf, waarbij het probleem zich voordoet in GetAllFilesIncludingDependendFiles. De check file.Dependencies.Count op regel 16 geeft hier in dit voorbeeld dus wel aan 2 objecten te bevatten, maar beide objecten zijn null.
Voor de duidelijkheid heb ik enkel relevante code geplaatst. De klasses die gebruikt worden zijn uitgebreider, maar het probleem doet zich op dit vereenvoudigde niveau ook voor. Wellicht dat het te maken heeft met mijn beperkte kennis, dus ik hoop dat iemand mij kan wijzen op de fout die ik maak. Ik heb geprobeerd te googlen op dit probleem, maar zoals ook al af te leiden uit de titel van dit topic, kan ik het probleem moeilijk in beperkte woorden omschrijven.
Ik ben inmiddels al anderhalve dag bezig met een probleem waar ik niet uit kom en waarvan ik niet begrijp waarom het doet wat het doet.
De situatie is als volgt: ik wil vanuit code-behind bestanden (JavaScript/CSS) toevoegen aan een pagina en heb daarvoor een extensie geschreven die dit regelt. De extensie accepteert een parameters array van het type EFile.
In deze klasse EFile zijn diverse statische instanties opgenomen die aangeroepen kunnen worden. Een instantie van EFile beschikt over een string FileContent, met daarin de inhoud van het bestand en een List<EFile> Dependencies die een lijst bevat van andere EFiles, waarvan de instantie afhankelijk is.
Als ik vervolgens een meegegeven instantie van EFile uitlees binnen de extensie, dan bevat de lijst Dependencies wel het aantal objecten dat ik verwacht, maar alle objecten zijn dan null en ik begrijp niet waarom.
Hieronder volgt code ter verduidelijking en als voorbeeld:
De aanroep van de extensie. Als voorbeeld wil ik hier dus de bestanden die behoren bij EFile.ImageUpload toevoegen aan de pagina:
C#:
1
2
3
4
| private void Page_LoadComplete(object sender, EventArgs e) { Page.AddFiles(EFile.ImageUpload); } |
De klasse EFile, waar de statische instanties staan beschreven. In het geval van ImageUpload betekent dit dus dat deze 2 afhankelijkheden heeft, namelijk naar JQueryJCrop en JQueryJColor.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| public class EFile { public string FileContent { get; private set; } public List<EFile> Dependencies { get; private set; } private EFile(string file, params EFile[] dependencies) { FileContent = file; Dependencies = new List<EFile>(dependencies); } public static readonly EFile ImageUpload = new EFile(Resources.ImageUpload, EFile.JQueryJCrop, EFile.JQueryJColor); private static readonly EFile JQueryJCrop = new EFile(Resources.JQueryJCrop); private static readonly EFile JQueryJColor = new EFile(Resources.JQueryJColor); } |
De extensie zelf, waarbij het probleem zich voordoet in GetAllFilesIncludingDependendFiles. De check file.Dependencies.Count op regel 16 geeft hier in dit voorbeeld dus wel aan 2 objecten te bevatten, maar beide objecten zijn null.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| public static void AddFiles(this Page input, params EFile[] files) { var scripts = GetAllFilesIncludingDependendFiles(new List<EFile>(files)); if (scripts.Count > 0) input.Controls.Add(GetScript(scripts)); } private static List<EFile> GetAllFilesIncludingDependendFiles(List<EFile> files) { var allFiles = new List<EFile>(); foreach (var file in files) { allFiles.Add(file); if (file.Dependencies.Count > 0) allFiles.AddRange(GetAllFilesIncludingDependendFiles(file.Dependencies)); } return allFiles; } |
Voor de duidelijkheid heb ik enkel relevante code geplaatst. De klasses die gebruikt worden zijn uitgebreider, maar het probleem doet zich op dit vereenvoudigde niveau ook voor. Wellicht dat het te maken heeft met mijn beperkte kennis, dus ik hoop dat iemand mij kan wijzen op de fout die ik maak. Ik heb geprobeerd te googlen op dit probleem, maar zoals ook al af te leiden uit de titel van dit topic, kan ik het probleem moeilijk in beperkte woorden omschrijven.
You know, I rather like this God fellow. He’s very theatrical. A little pestilence here, a plague there... Omnipotence...got to get me some of that.