lägg till denna konstruktor i basklassen:
public File() { }
Detta för att i de ärvda klassernas konstruktorer så kallar du inte på någon konstruktor till basklassen.
5 svar · 264 visningar · startad av Nickemannen
Jag är rätt ny på arv iaf i C#
Men jag fattar inte riktigt vad jag har för fel... Visst
File har inget värde men jag har testat massor av saker jag får
No overload for method 'File' takes '0' arguments
public class File
{
private string strName;
private string strContentType;
public File(string Name, string ContentType)
{
strName = Name;
strContentType = ContentType;
}
public string getName() { return strName; }
public string getContentType() { return strContentType; }
}
public class Includefile : File
{
private string strContentId;
public Includefile(string ContentId)
{
strContentId = ContentId;
}
public string getContentId() { return strContentId; }
}
public class Attatchment:File
{
private string strFileName;
public Attatchment(string FileName)
{
strFileName = FileName;
}
public string getFileName() { return strFileName; }
}
}
lägg till denna konstruktor i basklassen:
public File() { }
Detta för att i de ärvda klassernas konstruktorer så kallar du inte på någon konstruktor till basklassen.
Hmmm, okej
Men hur gör jag sedan när jag skall skapa objektet ?
Jag kanske inte kan ärva ändå eftersom jag inte har någon standard i File, jag vill sätta dom värdena också när jag t.ex. anropar Attatchment
Du har en konstruktor i din File som tar emot 2 parameters. Det betyder att när du skapar instanser av klasser (IncludeFile,Attachment) så måste du skicka med dessa 2 parameter till din basklass. Alltså måste du "anropa" basklassen med dessa 2 paramter och det gör du så här.
public class Attatchment:File
{
public Attatchment(string FileName) : base(FileName,"")
{
strFileName = FileName;
}
}
Problemet är att din klasser som ärver från File, inte har 2 parameter som input till sig. Alltså blir det bra, eftersom du då måste skicka med tomma stängar istället för värde.
Så Se till att din 2 klasser tar emot samma parameter som din basklass och sedan skicka med dessa till basklassen.
- M
Om du vill kunna skapa ett objekt av attachment med värden till objekten kan du modifiera din konstruktor i Attachment
public Attatchment(string FileName, string str1, string str2) : base (str1, str2)
{
strFileName = FileName;
}
Sen för att skapa objekt kan du göra följande:
Attatchment f = new Attatchment("gggg", "lasse", "g");
Console.WriteLine(f.getName() + " " + f.getFileName());
Console.Read();
Precis det svaret jag ville ha tack!