Как получить доступ к внутренним закрытым переменным внутри статических методов C # - PullRequest
0 голосов
/ 19 декабря 2018

Я кодирую в MVVM и у меня есть класс вычисления.Внутри этого класса Calc у меня есть различные статические функции-члены, каждая из которых вычисляет часть моих вычислений.

Например: Inside Calc Class:

одна из функций-членов:

public static double CalcTimeJerkAcc(double limitedAcceleration, double maxJerk)
{
    return (limitedAcceleration / maxJerk);
}

другая функция-член, в которой я использую timeJerkAcc:

public static double CalcCalculation(double timeJerkAcc, ...) { ... }

сейчасЯ хочу реализовать эти вычисления в модели:

public double PositioningTime
    {
        get
        {
             return CalcClassObject.CalcCalculation(CalcClassObject.timeJerkAcc, ...); 
        }
    }

Как получить доступ к закрытым переменным, таким как "timeJerkAcc", из класса Calc, несмотря на то, что они статичны?Мой подход с CalcClassObject.timeJerkAcc в параметрах передачи в CalcClassObject.CalcCalculation(...) явно неверен.Я застрял.Может кто-нибудь прояснить эту проблему для меня?Я довольно новичок в C # и надеюсь, что это не очень глупый вопрос ...

Трудно описать мою проблему хорошо, но я надеюсь, что кто-то поймет, что я пытаюсь сделать.

1 Ответ

0 голосов
/ 19 декабря 2018

Я не уверен, правильно ли я понял, но вы хотите создать модель, которая вызывает статические методы и переменные.

Итак, я создал небольшой фрагмент, который, надеюсь, поможет вам:

Это основной класс:

class Solution
{
    static void Main(string[] args)
    {
        MyModel model = new MyModel();

        Console.WriteLine(model.PositioningTime);
        Console.ReadLine();
    }
}

И класс вычисления:

public class Calculation
{
    public static double timeJerkAcc = 12;
    public static double maxJerk = 30;
    public static double CalcTimeJerkAcc(double limitedAcceleration, double maxJerk)
    {
        return limitedAcceleration / maxJerk;
    }

    public static double CalcCalculation(double timeJerkAcc, double temp)
    {
        return timeJerkAcc / temp;
    }
}

И, наконец, класс Model:

public class MyModel
{
    public double PositioningTime
    {
        get
        {
            return Calculation.CalcCalculation(Calculation.timeJerkAcc,Calculation.maxJerk);
        }
    }
}

Для вызова статических переменныхили методы, которые находятся вне текущего класса, вы должны установить их как public .

Надеюсь, это помогло вам, если это не так, попробуйте объяснить вашу проблему более подробно

С уважением.

...