Существует требование сохранить некоторые параметры с другим типом данных, поэтому мы используем статический класс со статическими свойствами.
public class DynamicVariableSheet
{
public static class SendBackOptions
{
public static byte IsCancellingBrothersNode { get; set; }
}
public static class ForwardOptions
{
public static string SignForwardCompareType { get; set; }
public static float SignForwardCompleteOrder { get; set; }
}
}
Тогда DynamicVariableSheet будет свойством другого класса:
public class Runner
{
public string RunnerName { get; set; }
public DynamicVariableSheet DynamicVariableSheet { get; set; }
}
Я могу установить некоторое значение напрямую, используя этот код:
DynamicVariableSheet.SendBackOptions.IsCancellingBrothersNode = 1;
Но как я могу сделать переменную свойства для установки значения в класс Runner, как этот код.
var runner = new Runner();
runner.AppName = "Order";
runner.DynamicVariableSheet.SendBackOptions.IsCancellingBrothersNode = 1;
Так вы хотите, чтобы он был статичным или нет? Если вы сделаете его статическим, вы не сможете использовать runner.DynamicVariableSheet...
. Если он не статичен, вы не можете установить его напрямую.
пожалуйста, опишите мысль, стоящую за вашим подходом, какова цель наличия DynamicVariableSheet
в качестве свойства в классе бегунов? Вы хотите индивидуальное значение для каждого Runner
? или вы намерены иметь одинаковое значение для всех Runner
объектов?
В классе бегуна необходимо установить множество динамических параметров. Я почти думаю, что если я могу свободно писать, легко просмотреть эти параметры, стиль будет таким: runner.DynamicVariableSheet.SendBackOptions.IsCancellingBrothersNode = 1; runner.DynamicVariableSheet.FowardOptions.SignForwardCompareType = "Sequence";
DynamicVariableSheet.SendBackOptions.IsCancellingBrothersNode = 1;
этот призыв вводит в заблуждение. Это не означает, что вы обращаетесь к переменной SendBackOptions
в классе DynamicVariableSheet
. Это означает, что вы получаете доступ к «внутреннему классу»! Есть ли причина, по которой вы решили реализовать его как внутренний класс? Я не вижу явных причин (пока) для этого
Зачем вам нужен статический класс? Если вам действительно нужен статический класс, вы можете напрямую ссылаться на этот класс в классе Runner
, не используя его как свойство.
«В классе бегуна нужно установить много динамических параметров» вам нужен набор разных значений для каждого отдельного объекта Runner
? могут ли они отличаться между Runner runner_1
и Runner runner_2
? Это очень важный вопрос.
@MongZhu, да, для каждого отдельного объекта Runner существует набор разных значений. Я просто подумал, есть ли хороший способ каждый раз избегать нового ключевого слова. Эти динамические параметры устанавливаются только один раз. Он просто управляет этими параметрами, используя группу за группой, например SendBackOption и ForwardOption.
Вы должны сделать DynamicVariableSheet
статическим членом класса Runner
Ну, поскольку они являются статическими классами, вы можете получить к ним доступ только так: DynamicVariableSheet.SendBackOptions.IsCancellingBrothersNode = значение;
Если вы хотите получить доступ следующим образом: runner.DynamicVariableSheet.SendBackOptions.IsCancellingBrothersNode = 1;
Превратите SendBackOptions и ForwardOptions в нестатические классы и поместите их за пределы DynamicVariableSheet. Теперь вы можете объявить их как свойства.
Я сделал это для вас ниже:
public class DynamicVariableSheet
{
public SendBackOptions SendBackOptions { get; set; }
public ForwardOptions ForwardOptions { get; set; }
}
public class SendBackOptions
{
public byte IsCancellingBrothersNode { get; set; }
}
public class ForwardOptions
{
public string SignForwardCompareType { get; set; }
public float SignForwardCompleteOrder { get; set; }
}
Свойство
public DynamicVariableSheet DynamicVariableSheet
ожидает и экземпляр классаDynamicVariableSheet
, но статический класс не имеет экземпляров, поэтому вы не можете этого сделать. Можете ли вы объяснить, почему вы попали в эту ситуацию? Какую именно проблему вы пытаетесь решить?