Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Lösning på problem med abstracta klasser...

Postades av 2006-01-13 10:25:47 - Ola Axelsson, i forum asp.net generellt, Tråden har 3 Kommentarer och lästs av 828 personer

Hej.

Jag har tidigare skrivet ett inlägg där jag hade problem med en abstract class. Till viss del kvarstår fortfarande problemet.

Här kommer lite exempel kod på vad jag gjort.

Min abstracta class:
<code>
public abstract class baseBusinessLayer
{
public abstract GeneralItem Get_specific(int id);

}
public class GeneralItem
{
int? id = null;

public int? Id
{
get
{
return id;
}
set
{
id = value;
}
}
</code>
Classen som använder sig av basklassen
<code>
public class businessUser:baseBusinessLayer
{
public override GeneralItem Get_specific(int id)
{
UserItem ui = new UserItem();
ui.Username = "test";
return ui;
}
public void testFunctin()
{
UserItem ui = (UserItem) Get_specific(123);
}
}
public class UserItem:GeneralItem
{
string username = string.Empty;

public string Username
{
get
{
return username;
}
set
{
username = value;
}
}
}
</code>

Tycker inte detta blir en snygg lösning eftersom jag får typecasta mitt UserItem i "testFunction()".

Visst måste detta gå att lösas snyggare med Generics och interface i ASP.NET 2.0. Man vill väl få bort alla typecastningar man fick göra i ASP.NET 1.1....

Hälsningar


Svara

Sv: Lösning på problem med abstracta klasser...

Postades av 2006-01-13 12:59:43 - Patrik Löwendahl

i 2.0 gör du följande:

<code>
public abstract class baseBusinessLayer<T> where t: GeneralItem
{
public abstract T Get_specific(int id);

}
public class GeneralItem
{
int? id = null;

public int? Id
{
get
{
return id;
}
set
{
id = value;
}
}
</code>
Classen som använder sig av basklassen
<code>
public class businessUser:baseBusinessLayer<UserItem>
{
public override UserItem Get_specific(int id)
{
UserItem ui = new UserItem();
ui.Username = "test";
return ui;
}
public void testFunctin()
{
UserItem ui = this.Get_specific(123);
}
}
public class UserItem:GeneralItem
{
string username = string.Empty;

public string Username
{
get
{
return username;
}
set
{
username = value;
}
}
}
</code>


Svara

Sv: Lösning på problem med abstracta klasser...

Postades av 2006-01-13 14:07:05 - Martin Adrian

Känns som du har missuppfattat något.

Använd virituella metoder iställer för typecast


Svara

Sv:Lösning på problem med abstracta klasser...

Postades av 2006-01-13 19:52:19 - Patrik Löwendahl


1) En abstract metod är en virtuell metod med en constraint som säger "Must Implement"

2) Vid en override av en vrituell metod kan du inte ändra på metodens returtyp utan den måste se ut på exakt samma sätt som metoden du väljer att implementera om.

Du skulle teoretiskt sett kunna använda en teknik som heter "Method Hiding" (nyckelordet new i C#) för att skapa en helt ny implementation med samma namn, men då missar du hela polymorfism begreppet i dina klasser och dessutom är det vanligtvis till mer förtret än det hjälper.

I C# 2.0 använder vi generics för att slippa typecasts och för att kunna ändra på returvärdet i sub-implementationer.





Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 604
27 953
271 705
6 606
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies