Avatar billede fuxi Nybegynder
30. marts 2004 - 21:34 Der 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" %>

<script language="C#" runat="server">
void Page_Load(Object Source, EventArgs E)
{
    ForumData fd = new ForumData();
   
    //Create category array for test
    int[] arrayCategory = {1,2,5,8,3,7};
   
    //Insert test
    fd.forumID = 1;
    fd.imageID = 1;
    fd.portalID = 1;
    fd.title = "Børnetøj - Piger";
    fd.categoryID = arrayCategory;   
    fd.description = "Skal børnetøj til piger altid være i pigefarver?";
    fd.approved = true;
   
    //Instanciate message variable   
    string message = "";
   
    message += "ForumID: " + fd.forumID + "<br>";
    message += "ImageID: " + fd.imageID + "<br>";
    message += "PortalID: " + fd.portalID + "<br>";
    message += "Title: " + fd.title + "<br>";
    message += "Category 1: " + fd.categoryID[0] + "<br>";
    message += "Description: " + fd.description + "<br>";
    msg.Text = message;
   
}
</script>
<asp:label id="msg" runat="server"></asp:label>


Kort sagt har jeg problemer med at få min ForumData.cs fil til at fange en ForumThreadData classen....

/FUXI
Avatar billede skg Nybegynder
30. marts 2004 - 23:20 #1
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 ?
Avatar billede fuxi Nybegynder
31. marts 2004 - 07:54 #2
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
Avatar billede skg Nybegynder
31. marts 2004 - 08:09 #3
normalt vil man lave et nyt projekt som man fylder sin Business Logic ned i, men der er ingen der siger man ikke må have det hele i samme projekt.

Anyway, kig lidt på ASP.NET Forums ( http://www.asp.net/Forums/Download/Default.aspx?tabindex=0&tabid=1 ). Her kan du se hvordan et bud på opbygningen af et projekt i ASP.Net kan laves.
Avatar billede fuxi Nybegynder
31. marts 2004 - 08:27 #4
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...
Avatar billede fuxi Nybegynder
31. marts 2004 - 08:41 #5
Har du iøvrigt nogle bøger eller sites hvor der er noget ordentlig læsning omkring C# og .NET ... Jeg har et par bøger men de sux bigtime...
Avatar billede burningice Nybegynder
31. marts 2004 - 10:52 #6
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
Avatar billede fuxi Nybegynder
31. marts 2004 - 11:16 #7
Forudsætter det ikke at de ligger i samme fil? ellers giver det jo ikke så meget mening... Eller er det bare mig der er forkert på den?
Avatar billede burningice Nybegynder
31. marts 2004 - 11:25 #8
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.
Avatar billede fuxi Nybegynder
31. marts 2004 - 11:29 #9
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..
Avatar billede burningice Nybegynder
31. marts 2004 - 11:37 #10
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.
Avatar billede fuxi Nybegynder
31. marts 2004 - 12:23 #11
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)
Avatar billede burningice Nybegynder
31. marts 2004 - 13:23 #12
der følger en compiler med sdk'et ja :)
Avatar billede fuxi Nybegynder
20. oktober 2004 - 13:30 #13
Bla!!!
Avatar billede fuxi Nybegynder
20. oktober 2004 - 13:31 #14
Er der nogen der vil have point må i lige lave et svar istedet for en kommentar!!!
Jeg lukker den i denne uge
Avatar billede burningice Nybegynder
20. oktober 2004 - 14:37 #15
svar
Avatar billede fuxi Nybegynder
20. oktober 2004 - 15:00 #16
jamen for sku da også, det nytter jo ikke noget bare at skrive svar når det ikke er et svar du laver ;O)
Avatar billede burningice Nybegynder
20. oktober 2004 - 15:31 #17
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester