Ik zit hier een programma te maken voor het .Net Compact Framework 1.nogwat
Daarin zitten nogal wat dingen die wel in .Net 1.1 zitten niet, .Net CF is pas vanaf 2.0 een beetje volwassen zeg maar
Om dat de ondervangen had ik een aantal kleine proceduretjes:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| namespace (bedrijfsnaam)
{
public class GenericTools
{
public static string MD5HashString(string s)
{
// stukje code gecopy/pase van OpenNetCF-forums
}
public static string ReadINIString(string Section, string Key, string DefaultValue, string FileName)
{
// StreamReader / peek / readline. / if startswith("["+Section) etc etc)
}
}
} |
Notice alle static-statements

Ik had namelijk vaak maar 1 ding eruit nodig, en er zit niet echt een samenhang tussen alle items, dus ik dacht het zo nog wel netjes opgelost te hebben.
Totdat ik me bedacht dat ik moest gaan multithreaden (met name om de UI rsponsive te houden)
Ik heb echter in veel klassen maar 1 aanroep uit de hele tools-collectie nodig. Nu staat er dus een aantal keer
C#:
1
2
3
4
5
6
7
| // in CommunicationFactory:
(bedrijfsnaam).GenericTools tools = new (bedrijfsnaam).GenericTools();
string comm = tools.ReadINIString("Program", "Send", "TCP", tools.ApplicationDir + "\\TrackTrace.ini");
// in DatabaseFactory:
(bedrijfsnaam).GenericTools tools = new (bedrijfsnaam).GenericTools();
string database = tools.ReadINIString("Program", "Save", "SQLCE", tools.ApplicationDir + "\\TrackTrace.ini"); |
waarna tools al meteen opgeruimd kan worden
GenericTools omdat ik ook nog een SocketTools heb (voor TCP-communicatie met een Delphi/Indy TIdTCPServer) en er misschien nog wel meer komen.
ApplicationDir is een "Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName);" die in de constructor in een string met getter wordt gezet.
Ik weet zo alleen niet welke van de 2 ik het slechtste vind: procedureel programmeren door het allemaal static te maken, of steeds een klasse instantieren om er vervolgens 1 method uit te gebruiken
Ik moet trouwens nog eens een keer een C# coding-convention opsnorren want ik heb eigenlijk geen idee of ik het nu een beetje goed doe, wat dus ook een WTFje is