webForumDet fria alternativet

två funktioner till en

.NET

2 svar · 230 visningar · startad av DavidB

Medlem sedan jan. 20001 372 inlägg
Frågan#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?

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)