30. marts 2004 - 21:34Der er
16 kommentarer og 1 løsning
.CS fil der skal hente fra anden .CS fil
Jeg er nok lidt at en newbie i C# (startede idag *s*), så jeg har lige et lille spørgsmål...
Jeg har følgende kode fordelt på 3 filer....
//Filen hedder ForumThreadData.cs using System; using System.Configuration;
using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls;
public class ForumThreadData: Page { private int intForumThreadID; private int intForumID; private int intOriginalThreadID; private string stringTitle; private string stringBody; private DateTime dateCreatedDate; private bool boolIsOriginalThread; private bool boolApproved;
public int forumThreadID { get { return intForumThreadID; } set { intForumThreadID = value; } }
public int forumID { get { return intForumID; } set { intForumID = value; } }
public int originalThreadID { get { return intOriginalThreadID; } set { intOriginalThreadID = value; } }
public string title { get { return stringTitle; } set { stringTitle = value; } }
public string body { get { return stringBody; } set { stringBody = value; } }
public DateTime createdDate { get { return dateCreatedDate; } set { dateCreatedDate = value; } }
public bool isOriginalThread { get { return boolIsOriginalThread; } set { boolIsOriginalThread = value; } }
public bool approved { get { return boolApproved; } set { boolApproved = value; } } }
/* Filen hedder ForumData.cs, ideen er at denne container class skal have en instanser af den forrige klasse */ using System; using System.Configuration;
using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls;
public class ForumData: Page { private int intForumID; private int intImageID; private int intPortalID; private int[] arrayCategoryID; private string stringTitle; private string stringDescription; private bool boolApproved; private forumThreadData[] forumThreads;
public int forumID { get { return intForumID; } set { intForumID = value; } }
public int imageID { get { return intImageID; } set { intImageID = value; } }
public int[] categoryID { get { return arrayCategoryID; } set { arrayCategoryID = value; } }
public int portalID { get { return intPortalID; } set { intPortalID = value; } }
public string title { get { return stringTitle; } set { stringTitle = value; } }
public string description { get { return stringDescription; } set { stringDescription = value; } }
public bool approved { get { return boolApproved; } set { boolApproved = value; } } }
<!--- Denne fil hedder ForumData.aspx og skal blot teste eksemplet ---> <%@ Page Language="C#" Inherits="ForumData" Src="ForumData.cs" Description="MainPage" %>
jeg vil foreslå dig at læse en tutorial - eller i bedste fald, en hel bog - om OOP programmering :-)
men anyway : da dine class'er gerne skulle lige i det samme namespace, så kan du jo sagtens instansiere dem inde i hinanden ( med mindre de er abstract, private eller noget andet ).
Du lader dine class'er nedarve fra Page, når du rent faktisk bruger dem som Business Objects - dette giver på ingen måde mening, da page jo bruges til, som navnet antyder, at styre en side med - og de ting der følger med.
Har du kodet noget andet før ? J(ava)Script ? VBScript ? PHP ?
Jeg har kodet Java (flere år siden), C++ (endnu flere år siden), ASP + VBScript, Cold Fusion, JavaScript og sikkert også en hel del andet igennem tiden.. Så jo jeg har lidt programmerings erfaring... men det er ved at være lang tid siden jeg har kodet objektorienteret så jeg skal nok lige have pudset det af :-)
Grunden til at jeg har kaldt page der er at det var den eneste måde jeg kunne få den til at virke... Jeg har prøvet at lave den som namespace, men det er muligvis der fejlen opstår...
Jeg ville være lykkelig hvis der var en der lige ville give et eksempel på hvordan de ville lave det jeg har gjort... Jeg har 2 Containere / Business Objekter hvor ForumData skal have en instans af klassen ForumThread, og så naturligvis min test fil ForumData.aspx
Thanx .... det havde nu været lidt mere overskueligt hvis jeg havde haft et eksempel der ikke bestod af 50 filer... Er der en mulighed for at lave et super simpelt eksempel, jeg har kigget lidt på det og syntes der er meget at holde styr på i det eksempel der er på linket...
fuxi>> grundet til at du får fejl hvis du ikke arver fra page, er at du lader din .aspx-fil arve fra ForumData... drop det, det er der ingen grund til overhovedet, og på den måde slipper du også for at ForumData og ForumThreadData skal arve fra Page.
Ang. at få ForumData til at referere til nogle ForumThreadData-objecter er det skam ikke så svært...
public class ForumData { private int intForumID; private int intImageID; private int intPortalID; private int[] arrayCategoryID; private string stringTitle; private string stringDescription; private bool boolApproved; private ForumThreadData[] forumThreads = {new ForumThreadData(), new ForumThreadData()};
}
dit ForumData-object indeholder nu et ForumThreadData-array med reference til to ForumThreadData-instanser
de skal bare ligge i samme assembly... filerne er 100% fuldstændig og aldeles underordnet i C#... du kan have en klasse i hver fil og du kan have 100234234234 klasser i samme fil... doesn't matter.
Oki endu et dumt spørgsmål... som sagt er jeg ret ny i C# (anden dag jeg leger med det) I samme assembly? Hvad mener du nærmere betegnet... jeg ville meget meget gerne se et lille eksempel hvor man har en fil der bruger en klasse fra en anden fil... Og hvor den sidste fil .aspx samler trådene og tester af... For jeg tror ikke helt at jeg er med på hvordan..
hvis du har et projekt du compiler til en enkelt dll, så ligger det i samme assembly. Som tommelfingerregel er en assembly bare en dll-fil, men der er nogle undtagelser.
Det er egentlig ret nemt for at få ovenstående til at virke. Du skal lige sørge for at din aspx-side ikke arver fra noget. Så kompiler du dine to .cs-filer til en dll-fil og ligger den i /bin-mappen i roden af din webapplikation, og så tester du bare på samme måde som du har gjort nu her på din aspx-side.
Oki så er jeg med... Jeg bruger homesite til at skrive koden i, så det har ikke ligefrem været så naturligt for mig at kompilere. men det kan man jo så gøre igennem .NET frameworket formoder jeg :O)
hovsa... hehe... eksperten burde lave en funktion der tjekker for input, og hvis det er lig med svar, og intet andet, skal indlægget opfattes som et svar.
Synes godt om
Ny brugerNybegynder
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.