Diskuze: Volani metody z jine tridy
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 11 zpráv z 11.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Keďže nemáš pri metóde Zkouska uvedený prístupový modifikátor, kompilátor vždy predpokladá najreštriktívnejší možný - v tvojom prípade private. Dopíš tam explicitne public a malo by to ísť.
U té metody si nespecifikoval jestli chceš, aby byla privátní nebo veřejná. Tím, že si tam nic nenapsal, program automaticky bere, že je privátní a tudíž dostupná jen v rámci té jedné třídy, proto jí nemůžeš zavolat z venčí.
Myslím, že bys měl mít dříve
InitializeComponents();
a pak až volat tu tvojí třídu
Důvod je ten, že zbytečně pak vytváříš tu třídu MainWindow znovu v té třídě Class1, přístup na ten atribut můžeš vyřešit předáním parametru this v konstruktoru té Class1.
public partial class MainWindow: Window {
MtApiClient apiClient = new MtApiClient();
Class1 cles;
public MainWindow() {
InitializeComponents();
this.cles = Class1(this);
}
}
A v Class1
class Class1 {
private MainWindow mainWindow;
public Class1(MainWindow mainWindow) {
this.mainWindow = mainWindow;
}
public void zkouska() {
mainWindow.textBox1.text = "Bla";
}
}
Asi tak nějak by to mělo být a nejspíše to nebude úplně nejlepší řešení.
Nevím jestli je nejlepší, ale je funkční ...Používaní this je pro me jeste vyssi divcí.
BTW: pises ze zbytecne vytvarim tridu. Ale dle toho ze to pada to tak delat ani nemuzu ne?
Znamena to že nemuzu Class1 vytvorit objekt v Class2
a v Class2 vytvorit objekt na Class1 ?
Můžeš, ale pak to nebudeš mít ty samé objekty, tak to nefunguje. Proto musíš předat objekt té jedné třídy
this
do objektu té druhé, abys ho mohl z ní používat.
Ale můžeš, jen ji musíš mít taky public
public class Clas1{
}
Zobrazeno 11 zpráv z 11.