webForumDet fria alternativet

Arv å sånt :)

.NET

5 svar · 264 visningar · startad av Nickemannen

Medlem sedan aug. 20003 575 inlägg
Frågan#1

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;	}
	}
}
Medlem sedan nov. 20022 355 inlägg
#2

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.

Medlem sedan aug. 20003 575 inlägg
#3

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

Medlem sedan maj 20012 812 inlägg
#4

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

Medlem sedan nov. 20022 355 inlägg
#5

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();
Medlem sedan aug. 20003 575 inlägg
#6

Precis det svaret jag ville ha tack!

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