två funktioner till en

.NET

2 svar · 246 visningar · startad av DavidB

Medlem sedan jan. 20001 372 inlägg
Trådstart#1

Tjena

Har följande två funktioner som jag kör från två olika ställen i min kod. Funktionerna är identiska med en liten skillnad (fet markerad):

private void BuildDg(object sender, [b]DataGridCommandEventArgs[/b] e, int CatId){
	
	// massa kod
	e.Item.Cells[0].Controls.Add(dg);
}

private void BuildDg1(object sender, [b]DataGridItemEventArgs[/b] e, int CatId){

	// massa kod
	e.Item.Cells[0].Controls.Add(dg);
}

Det känns ju ganska onödigt att ha samma kod på två olika ställen så jag undrar om det går på nåt sätt att få ihop dessa två till en funktion?

Medlem sedan dec. 19991 072 inlägg
#2

Är alltså enda skillnaden datatypen i signaturen? Du använder alltså inte "e" nånstans i koden?

I så fall borde du kunna byta ut respektive signatur till:

(object sender, EventArgs e, int CatId)

Då bägge klasser ändå ärver från den.

Medlem sedan jan. 20001 372 inlägg
#3

Fungerade inte, jag använder e för att trycka in en datagrid i en cell.

e.Item.Cells[0].Controls.Add(dg);

Funderade lite och kom fram till att det kanske går att göra någonting liknande detta

private void BuildDg(object sender, [b]DataGridCommandEventArgs ce,DataGridItemEventArgs ie[/b], int CatId){
	
	// massa kod
	
	if(ce == null){
		ie.Item.Cells[0].Controls.Add(dg);
	} else if(ie == null){
		ce.Item.Cells[0].Controls.Add(dg);
	}
}

Nu e dock grejen den att jag vet inte hur jag skall anropa funktionen, går det att göra så att man slipper ange båda EventArgs:en så den kör med det argument som är angivet?

254 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)