Diskuze: Chyba - nekonzistentní dostupnost
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 19 zpráv z 19.
//= 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.
Connection má modifikátor přístupu internal/protected/private, hoď ho na public.
Díky za radu. Když jsem ho hodil na public, tak žádná změna. Jinak Connection je taky třídy, kterou jsou vytvořil, ale to je asi jasné.
public partial class Form1 : Form{
public Form1(Connection connection)
{
...
}
}
"Vysvětlení: Dejme tomu, že to bude class library, ty si jí naimportuješ někde do dalšího projektu a budeš chtít vytvořit instanci. Chce po tobě v konstruktoru nějaký objekt connection typu Connection, ale ty vůbec nevíš, že existuje, protože je internal (nebo něco méně), místo public."
Nemá zase ten Connection nějaké dependencies na ostatní třídy?
Rebuildni to (F6) a napiš tu chybu co to hlásí. Určitě musela zmizet.
Popisoval jsem to sice na jiném příkladě, ale jinak to je to stejné.....(SearchAddress)
Zdroják SearchAddress pokud to v něčem pomůže
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
namespace ProjektAdresy
{
class SearchAddress
{
private Connection connection = null;
private MySqlCommand command = new MySqlCommand();
private MySqlDataReader reader = null;
public SearchAddress(Connection connection)
{
this.connection = connection;
}
public List<ComboBoxItem> getResult(string command, string parametr)
{
List<ComboBoxItem> array = new List<ComboBoxItem>();
this.command.CommandText = command;
this.command.Connection = this.connection.getLink();
using(this.reader = this.command.ExecuteReader())
{
while(this.reader.Read())
{
array.Add(new ComboBoxItem(this.reader[parametr].ToString()));
}
}
return array;
}
public int getId(string command, string parametr)
{
int id;
this.command.CommandText = command;
this.command.Connection = this.connection.getLink();
using (this.reader = this.command.ExecuteReader())
{
this.reader.Read();
id = (int)this.reader[parametr];
}
return id;
}
}
}
Nevím, ale děláš si ze mě srandu ne?
public class SearchAddress
Pročti si vše co jsem ti tu napsal. Resp. řekni mi, co jsi změnil.
Podle screenu jsem to hodil na public a vytvořil konstrktor Form1 (Main), ale to nefunguje, protože jsem to udělal asi špatně, ale takto jsem to od tebe pochopil.
Máš změnit modifikátor přístupu té třídy z internal na public (z ničeho na public) a né modifikátor přístupu té proměnné uvnitř té třídy.
Zkráceně, nic neměň. Jen přidej public před to class.
Btw, ten konstruktor měl být jenom reálné vysvětlení proč to nejde.
Díky za trpělivost, jsem nějaký natvrdlý. Už se mi to povedlo opravit, ale v momentě, když jsem dal před class public, tak všechny metody v té třídě začaly hlásit tu samou chybu.
Jasně no, tak ono to stejné pravidlo platí pro všechny ty třídy.
Prostě všude před třídy, struktury, enumy a interfacy nacpi public a máš
klid. Až se budeš chtít posunout někdy v programování dál, tak si pročti
tento thread a snad už budeš chápat, proč tomu tak je
Ok, díky. Public jsem všude dal, ale stejně si překladač stěžuje
To samé udělej i s třídou Connection a ComboBoxItem.
Zobrazeno 19 zpráv z 19.