На работе я контролирую очень большой список серверов и веб-сайтов, связанных с приложением, запущенным на серверах. Как правило, каждое приложение имеет кластер серверов за ним и примерно 6-10 различных веб-страниц. Так что я сделал, так это то, что я создал класс Servers, который будет использовать имена серверов и управлять URL-адресами, связанными с ним. Теперь вот часть, с которой я борюсь. Каждый URL-адрес будет иметь два значения, связанные с ним: физический url и статус URL-адреса (онлайн/офлайн). Я придумал два способа справиться с этим: либо я создаю 2D-массив (или список), либо создаю подкласс url. Метод подкласса казался лучше, так как я думал, что доступ ко всем методам подкласса будет легким ... Ну, сейчас я не могу назвать их вообще вне класса Servers. Это заставляет меня думать, что у меня проблема с областью классов/методов. Вот мой код Servers.cs ... Что я делаю неправильно?Неверный охват моих вложенных классов?
public class Server
{
public List<string> serverNames = new List<string>();
public List<object> urlList = new List<object>();
public string[][] urlArr = new string[1][];
public Server()
{
}
public Server(string nm)
{
serverNames.Add(nm);
}
public void setName(string newName)
{
serverNames.Add(newName);
}
public void addUrl(string newUrl)
{
Server.Url url = new Server.Url(newUrl);
urlList.Add(url);
url.SetStatus(false);
}
protected class Url
{
public string url;
public bool status;
public Url()
{
}
public Url(string URL)
{
url = URL;
}
public void SetStatus(bool stat)
{
status = stat;
}
public bool ReturnStatus()
{
return status;
}
}
}
Вот как я пытаюсь вызвать метод Url класса ReturnStatus, чтобы увидеть статус этого URL-адреса. Проблема заключается в том, что метод ReturnStatus не доступен ...
private void button2_Click(object sender, EventArgs e)
{
int length = serversList[0].urlList.Count;
for (int i = 0; i <= length - 1; i++)
{
listBox1.Items.Add(serversList[0].urlList[i].ToString()+ serversList[0].urlList[i].ReturnStatus());
}
}
Сделать 'Url' классом' public', если вы хотите называть его извне? – millimoose
Непонятно, в чем проблема, вы никогда не используете 'Server.Url' из всего, что можно было бы назвать« вне класса «Server» в вашем примере кода. Можете ли вы показать какой-то код, который вы хотите работать, сломаны и ошибки, которые вы получаете? – millimoose
Кроме того, вы можете использовать свойства C# вместо методов, таких как 'SetStatus()' и 'ReturnStatus()'. Если ничто другое не является идиоматическим подходом. Также делает ли 'urlArr' что-нибудь? – millimoose