webForumDet fria alternativet

Komponenter

13 svar · 457 visningar · startad av SPiN

SPiNMedlem sedan mars 20007 896 inlägg
#1

I C# kan man juh skriva komponenter, men lämpar de sig bäst för just ASP.NET och C#-program, eller går de att använda lika effektivt som VB/C++/Java-komponenter med ASP? Den första tanken är juh att det borde fungera på samma smidiga sätt...

Jag har inte haft chansen att prova än, därav min lilla undran :)

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

VideMedlem sedan dec. 19998 577 inlägg
#2

... följdfråga: kan man sedan använda komponenten utanför .NET-ramverket?

Jag byggde en komponent i C# för ett tag sedan, och det var ju himla smidigt att skriva all kod i samma språk som man använder till "vardags", och det var himmla skönt att inte behöva registrera komponenten också... :)

------------------
Budweiser - Slightly contaminated water... probably harmless, but I would recommend boiling before you drink it...
webEye.nu SweQuake.com

SPiNMedlem sedan mars 20007 896 inlägg
#3

Okey, det förstår jag :)
Det är också enkelt att skapa instanser av komponenter i C# har jag märkt, nästan lika lätt som i Java, men jag har fortfarande inte fått det att funka...

Jag har en komponent, vi kallar den SPiNcomp, och en cs-fil, SPiNcs, som jag vill kunna köra min komponent genom.

SPiNcs.cs:

using System;

using SPiNcomp;

public class SPiNcs {
     public static void Main() {
          SPiNcomp sc = new SPiNcomp();
          Console.WriteLine(sc.getAValue);
     }
}

Jag får felmeddelandet vid kompileringen av SPiNcs.cs att den inte kunde hämta SPiNcomp. Vad kan vara fel?

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

[Redigerat av SPiN den 22 maj 2001]

MxMedlem sedan maj 200129 inlägg
#4

hmm, komponent är samma sak som Namespace. Så för att komma åt en klass i ett namespace måste du inkludera namespacet..

Ex

namespace SpinComp{
public class minKlass{
//min klass gö en massa saker
}
}

Kompilera detta till en .dll fil och lägg denna i bin katalogen (eller skapa en bin katalog).

sen gör en ny spinnsc.cs fil

using SpinComp;

namespace spinNsc{
public class spinNsc{
public spinNsc(){ //konstruktor
minKlass.görasakermetod();
//göra mera saker
}
}
}

Kompilera och det skall funka.

Solklart eller hur? ;)

------------------
Databind();

SPiNMedlem sedan mars 20007 896 inlägg
#5

Precis som jag gjort, men jag hade bara inte lagt det i en Bin-katalog :)
Och bin/ katalogen ska ligga i samma katalog som SPiNcs.cs då, som ska bli en körbara .exe, eller hur?

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

SPiNMedlem sedan mars 20007 896 inlägg
#6

Hmm får nu ett mycket underligt felmeddelande vid kompileringen när jag ska skapa min .exe...
Filerna:

SPiNcomp.cs

using System;

namespace SPiNcomp {
	public class SPiNtest {
		private string content	= "";
		
		public string getContent {
			get {
				return this.content;
			}
		}
		public string setContent {
			set {
				this.content = value;
			}
		}
	}
}

SPiNcs.cs

using System;
using SPiNcomp;

namespace SPiNcs {
	public class SPiNcs {
		public static void main() {
			SPiNcomp.setContent("SPiN!");
			Console.WriteLine(SPiNcomp.getContent);
		}
	}
}

Kompilerar in .dll-filen SPiNcomp.dll i bin-katalogen över där källfilerna ligger...
Felmeddelandet är att jag inte har nån entry point i min .exe, men vaffan det har jag juh :)

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

MxMedlem sedan maj 200129 inlägg
#7

Nej det har du inte alls..självklart skall main stavas med stort M ;)

case sensitive är bra eller hur :)

------------------
Databind();

SPiNMedlem sedan mars 20007 896 inlägg
#8

Hmm, my bad... Felmeddelande berodde på felstavning vid kompileringen :l

Jag får felmeddelandet att typen/namespacet SPiNcomp inte existerar i klassen eller namespacet ''.

Vad är fel eg.?

[redigerat]Jag hade stavat det med stort M först, men jag ändrade sen för att se om det hjälpte...[/redigerat]

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

[Redigerat av SPiN den 22 maj 2001]

MxMedlem sedan maj 200129 inlägg
#9

Okej, har kompilerat det själv så nu funkar det här. För det första skall .dll filen inte ligga i bin katalogen, my bad. Det är bara när man gör aspx sidor den skall ligga där..man blir lite blind när man använder visual studio och slipper tänka på allt sånt ;)

Här kommer kod...

using System;
using SPiNcomp;

namespace SPiNcs {
  public class SPiNcs {
    public static void Main() {
      SPiNtest test = new SPiNtest(); //du måste skapa en instans av objectet du vill använda
      test.setContent = "SPiN!"; //här tilldelar du content ditt värde genom en accessor
      Console.WriteLine(test.getContent);  //och här skriver du ut det
    }
  }
}

Din andra kod var ok

------------------
Databind();

SPiNMedlem sedan mars 20007 896 inlägg
#10

Tack så mycket för din kodbit, men jag får det juh inte att funka!
Kompilatorn säger att den inte kan hitta namespacet eller typen SPiNcomp!
SPiNcomp.cs

using System;

namespace SPiNcomp {
	public class SPiNtest {
		private string content	= "";
		
		public string getContent {
			get {
				return this.content;
			}
		}
		public string setContent {
			set {
				this.content = value;
			}
		}
	}
}

SPiNcs.cs

using System;
using SPiNcomp;

namespace SPiNcs {
	public class SPiNcs {
		public static void Main(string[] args) {
			try {
				SPiNtest spin = new SPiNtest();
				spin.setContent = args[0];
				Console.WriteLine(spin.getContent);
			}
			catch(Exception e) {
				Console.WriteLine("Du måste ange ett namn!");
				return;
			}
		}
	}
}

Ghaaa..

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

GrynetMedlem sedan maj 2001329 inlägg
#11

(skapade ett eget konto istället för att sno min kompanjons Mx ;))

Din kod funkar för mig. Du kanske skriver fel när du ska kompilera den?

csc /target:library /out:spincomp.dll spincomp.cs

när du skall kompilera .dll filen

csc /r:spincomp.dll /out:spin.exe spin.cs

när du skall kopilera programmet.

Var det här du gjorde fel?

SPiNMedlem sedan mars 20007 896 inlägg
#12

Japp, jag hade nog inte med /r:SPiNcomp.dll ;)
Jag trodde det bara var att köra på juh! :D

Tack så mycket för all hjälp!

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

SPiNMedlem sedan mars 20007 896 inlägg
#13

Humma... Nu har jag tänkt använda en komponent med ASP.NET, men inte funkar det heller...
Jag kompade .cs-filen som förut, men jag lade den i en bin-katalog i min webkatalog.

Jag försöker inkludera komponenten högst upp på .aspx-sidan med
<% @Import Namespace="MinKomponent" %>

Funkar inte. Den säger att den inte hittar MinKomponent i klassen ASP.

Hur ska jag göra för att få det att funka via ASP.NET?

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

GrynetMedlem sedan maj 2001329 inlägg
#14

den bin katalog du lägger .dll filen i måste ligga under roten på det virtuella bibloteket. (eller i system biblot)

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)