Avatar billede Mikker Praktikant
04. januar 2007 - 18:18 Der er 6 kommentarer og
1 løsning

Metoder i Interfaces, f.eks. IAsyncResult.AsyncWaitHandle.WaitOne

Hej Eksperter

Jeg forstår ikke hvordan man kalder en metode fra et Interface som f.eks. WaitOne() i interfacet IAsyncResult. Hvis jeg implementerer interfacet IAsyncResult i en klasse får jeg jo bare nogle tomme metoder som f.eks.:
public System.Threading.WaitHandle AsyncWaitHandle

Mvh.
Michael
Avatar billede arne_v Ekspert
04. januar 2007 - 18:25 #1
class Foo : IBar

laeses som "Jeg klassen Foo lover hermed at implementere alle metoder
i interfacet IBar"

derfor kan metoderne kaldes

om der er noget kode i metoderne (jeg antager at du taler om noget
automatisk stub generering i den IDE) er lige gyldigt for om de kan kaldes
Avatar billede hmortensen Nybegynder
04. januar 2007 - 18:26 #2
Hvis du har et interface og to klasser:
public interface ISomething
{
  int DoSomething();
}

public class Class1 : ISomething
{
  public int DoSomething()
  {
    return 1;
  }
}

public class Class2 : ISomething
{
  public int DoSomething()
  {
    return 2;
  }
}

Så har klasserne hver deres funktionalitet, men samme metode:

ISomething obj = new Class1();
int i = obj.DoSomething(); //i indeholder nu 1
Avatar billede Mikker Praktikant
04. januar 2007 - 18:38 #3
Jo, men hvis jeg implementerer IAsyncResult i en klasse, så får jeg metoden AsyncWaitHandle (tom naturligvis). Iflg. dokumentationen kan man vente på en thread ved at kalde metoden IAsyncResult.AsyncWaitHandle.WaitOne() - men skal jeg så selv kode metoden WaitOne() i AsyncWaitHandle og i så fald, hvordan kan jeg vide hvad den skal indeholde?

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemthreadingwaithandleclasswaitonetopic.asp
Avatar billede Mikker Praktikant
04. januar 2007 - 18:42 #4
Mht. interfaces generelt, så ved jeg hvordan de skal bruges, men stadig ikke hvorfor. Hvis jeg implementerer et interface, så ved jeg godt nok at klassen indeholder nogle bestemte metoder, men hvad kan jeg bruge det til når de er tomme?
Avatar billede arne_v Ekspert
04. januar 2007 - 18:49 #5
hele ideen i interfaces er at koden ikke skal aendres selvom implementation
af klassen aendres

nu har jeg aldrig arbejdet med IAsyncResult saa jeg vel helst ikke kommentere paa
den

men et eksempel jeg kender er IDbDataReader hvor du kan kalde .Read() og .GetString(col)
uden at vide om det er en SqlDataReader (MS SQLServer) eller MySqlDataReader (mySQL)
som ligger bagved
Avatar billede arne_v Ekspert
04. januar 2007 - 18:50 #6
hvis den IDE genererer en stub med tomme metoder naar du implementerer IAsyncResult,
saa er det sikkert meningen at du skal fylde noget i dem
Avatar billede arne_v Ekspert
17. marts 2007 - 21:23 #7
Tid at få afsluttet ?

(og et svar fra mig)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester