Avatar billede simsen Mester
13. januar 2012 - 13:37 Der er 3 kommentarer og
1 løsning

Nedarvnings spørgsmål

Hej,

Jeg har en form;
public partial class DebtorCase2 : ModalEntityBase
  {
    public DebtorCase2(DebtorCaseEntity entity)
    {
      InitializeComponent();

    /*  this.tbType.Masked = Kyborg.Form.TextBoxMask.Digit;
      this.error = "Der eksisterer i forvejen en sag med dette nummer.";
      this.entity = entity;
      this.tbType.DataBindings.Add("Text", entity, "Code");
      this.tbDescription.DataBindings.Add("Text", entity, "Text");
      this.dtpStart.Value = entity.BeginDate;
      this.dtpEnd.Value = entity.EndDate;*/
    }

    protected override void btnEdit_Click(object sender, EventArgs e)
    {
  /*  ((DebtorCaseEntity)this.entity).BeginDate = this.dtpStart.Value;
      ((DebtorCaseEntity)this.entity).EndDate = this.dtpEnd.Value;*/
      base.btnEdit_Click(sender, e);
    }
    protected override void btnNew_Click(object sender, EventArgs e)
    {
  /*  ((DebtorCaseEntity)this.entity).BeginDate = this.dtpStart.Value;
      ((DebtorCaseEntity)this.entity).EndDate = this.dtpEnd.Value;*/       
      base.btnNew_Click(sender, e);     
    }
  }

Som I kan se så arver den fra:
public partial class ModalEntityBase : XXX.UserControls.ModalForm.ModalBase
som arver fra
public partial class ModalBase : System.Windows.Forms.Form

I min DebtorCase2 klasse, har jeg så tilkendegivet, der skal en input parameter med public DebtorCase2(DebtorCaseEntity entity)
som er en DebtorCaseEntity (den kommer også pænt med over) i DebtorCase2.

Nu skal jeg så bruge den entity i ModalEntityBase men aner ikke hvordan jeg får tilgang til den?

Normalt er det jo den anden vej rundt og der har jeg ingen problemer. Så nogen der kan fortælle hvordan jeg får fat i DebtorCaseEntity entity fra ModalEntityBase?
Avatar billede simsen Mester
13. januar 2012 - 14:20 #1
Godt det snart er weekend :-)

Svar:
I ModalEntityBase sætter jeg en public:
public DebtorCaseEntity newEntity;

og i DebtorCase2's init tildeler jeg så den newEntitiy;
newEntity = modalEntity;
Avatar billede arne_v Ekspert
14. januar 2012 - 01:54 #2
Absolut ikke en paen loesning!

Du boer enten send den med op i constructorerne eller lave en abstrakt metode/property til at hente den med.
Avatar billede arne_v Ekspert
14. januar 2012 - 01:58 #3
Demo 1:

using System;

namespace E
{
    public class BC
    {
        private string s;
        public BC(string s)
        {
            this.s = s;
        }
        public void M()
        {
            Console.WriteLine(s);
        }
    }
    public class C : BC
    {
        public C(string s) : base(s) // send to base class constructor
        {
        }
    }
    public class Program
    {
        public static void Main(string[] args)
        {
            C o = new C("ABC");
            o.M();
            Console.ReadKey();
        }
    }
}
Avatar billede arne_v Ekspert
14. januar 2012 - 02:01 #4
demo 2:

using System;

namespace E
{
    public abstract class BC
    {
        public void M()
        {
            Console.WriteLine(S);
        }
        public abstract string S { get; } // a concrete sub class will have S
    }
    public class C : BC
    {
        private string s;
        public C(string s)
        {
            this.s = s;
        }
        public override string S // here it is
        {
            get { return s; }
        }
    }
    public class Program
    {
        public static void Main(string[] args)
        {
            C o = new C("ABC");
            o.M();
            Console.ReadKey();
        }
    }
}
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