SPiNMedlem sedan mars 20007 896 inlägg 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 ... 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 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 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 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 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 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 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 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 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 (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 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 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 den bin katalog du lägger .dll filen i måste ligga under roten på det virtuella bibloteket. (eller i system biblot)