webForumDet fria alternativet

Hur skall min objektstruktur se ut?

Programmeringur Programmering - Övrigt

3 svar · 537 visningar · startad av Nickemannen

Medlem sedan aug. 20003 575 inlägg
Frågan#1

Jag håller på att parsa en text med Mimestruktur och vill bygga upp en objektstruktur för detta.

Nu till problemet, eller ja hur jag borde lösa det, det finns olika typer av Content-type's plain/text, multipart/alternative osv. Om det bara hade varit så att det var plain/text, multipart/alternative hade man kunnat göra dom till enum's och haft i sin klass
ex:

private ContentType contentType;

Men saken är den att om det är multipart/alternative så kan den ha lite fler attribut till dom som t.ex. boundary="hej hej" vilket inte tillkommer vid text/plain vad jag har fattat det som. Så då blir varje sådan här del specialgjord, hur skall man göra då? lägga in dessa attributen direkt jämte en enum tycker jag inte alls om.
ex:

private ContentType contentType;
private string boundary;
private string start;

Så nu hur skall man göra? Jag har dessa tankar om det, att jag skapar en abstract basklass för ContentType's och sedan dom olika typerna ärver av denna som t.ex. TextPlain, MultipartAlternative som får ha attribut då (properties/getmetoder), sedan måste man kontrollera detta genom att kolla vad det är för typ av objekt, eller skall man lägga in en enum i ContentType objektet för detta? eller kanske lägga enumen i klassen som skall hålla på contenttype objektet?
ex:

private ContentType contentType;
private ContentTypeEnum contenType;

Jag anser nog att man skall kolla vad det är för typ av objekt som i c#

if(mimeDocument.ContentType is PlainText)
....

eller vad är smartast? :S

Medlem sedan juni 20008 205 inlägg
#2

Att använda downcasting eller operatorer i stil med is är aldrig helt rätt. Helst ska man använda polymorfism istället, så en klasstruktur är väl antagligen inte helt fel att använda. Spontant skulle jag nog rösta för att du hittar på en ContainerContentType, som är en klass som används för alla innehållstyper som innehåller flera olika "filer" och har start/boundary. Exakt hur du löser beror förstås på vad du tänker använda den till.

Medlem sedan aug. 20003 575 inlägg
#3

hmm, okej så då skulle en lösning vara att skapa en klass som heter

ContentType som innehåller en Container med flera attribut samt värden för dessa och en enum som visar vilken typ av contenttype det är. Vad sägs om den lösningen?

Medlem sedan juni 20008 205 inlägg
#4

Vad ska du med enumen till? Kom ihåg, if är din fiende.

134 ms totalt · 3 externa anrop · v20260731065814-full.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)