метод get и метод set для класса в классе c#

Есть много способов сделать это, я предполагаю, что вам нужно опросить сервер после определенного интервала и обновить ваш экран, вы можете сделать что-то вроде этого:

Опрос через определенный интервал времени

        constructor(props) {
           super(props);
           this.state = {
           tableHead: ['', 'Head1', 'Head2', 'Head3'],
           tableTitle: ['Title', 'Title2', 'Title3', 'Title4'],
           tableData: [ ],
          keepPolling: true
        }

        componentWillMount()
        {
          pollAfter(60 * 1000, ()=>{
            // get your data from the server here 
          }).then((response)=>{
           // and set state here like this
           this.setState({
             tableData : response
             });
          })
        }

        pollAfter(intervalDuration, fn) {
            const asyncTimeout = () => setTimeout(() => {
                this.pollAfter(intervalDuration, fn);
            }, intervalDuration);
            const assignNextInterval = () => {
                if (!this.keepPolling) {
                    this.stopPolling();
                    return;
                }
                this.interval = asyncTimeout();
            };

            Promise.resolve(promise)
            .then(assignNextInterval)
            .catch(assignNextInterval);
        }
14
задан Noldorin 11 May 2009 в 12:42
поделиться

5 ответов

Самый элегантный способ сделать это заключается в использовании неявных геттеров и сеттеров:

class InnerClass
{
  public int a{ get; set; }
  public int b{ get; set; }
}

class OuterClass
{
  public InnerClass innerClass{ get; set; }
}

Это неявно то же самое, что:

class InnerClass
{
    private int _a;
    public int a
    {
        get
        {
            return _a;
        }
        set
        {
            _a = value;
        }
    }

    private int _b;
    public int b
    {
        get
        {
            return _b;
        }
        set
        {
            _b = value;
        }
    }
}

class OuterClass
{
    private InnerClass _innerClass;
    public InnerClass innerClass
    {
        get
        {
            return _innerClass;
        }
        set
        {
            _innerClass = value;
        }
    }
}

Эти два определения неявно одинаковы - за исключением нескольких нажатий клавиш. В первом примере компилятор за кулисами реализует необходимые частные поля, поэтому вам не нужно. Однако второй дает вам больше контроля над происходящим.

21
ответ дан 1 December 2019 в 06:21
поделиться

Синтаксис ничем не отличается. Просто ...

public InnerClass InnerClass
{
    get { return innerClass; }
    set { innerClass = value; }
}

Кстати, если вы используете C # в .NET 3.5, вы можете использовать функцию автоматического создания свойств, если все, что у вас есть, - это простое свойство, которое просто читает и записывает в резервное хранилище (как вы есть выше). Sytax аналогичен абстрактному свойству:

public InnerClass InnerClass { get; set; }

Он автоматически генерирует частный член для хранения, затем считывает его в get и записывает в него в наборе .

26
ответ дан 1 December 2019 в 06:21
поделиться
public InnerClass InnerClass
    {
        get
        {
             return innerClass;
        }
        set
        {
             innerClass = value;
        }
     }
2
ответ дан 1 December 2019 в 06:21
поделиться

Это зависит от того, как должен работать внутренний класс. Внешнему классу может потребоваться «владеть» внутренним классом, и в этом случае:

public InnerClass InnerClass{
  get{ return innerClass; }
  set{ innerClass.CopyFrom(value); /* Pseudo method call */ }
}

Поступая таким образом, вы предотвращаете манипулирование экземпляром внешнего кода, кроме случаев, когда явно через OuterClass ..

0
ответ дан 1 December 2019 в 06:21
поделиться

Если вы имеете в виду доступ к внутренним членам класса без раскрытия самого внутреннего класса, вы можете использовать следующий код. Если вы просто хотите открыть this.innerClass , нет никакой разницы в том, как вы открываете поля InnerClass .

class OuterClass
{
    private InnerClass innerClass

    public int M_A
    {
        get
        {
            if (this.innerClass != null)
            {
                 return this.innerClass.M_A;
            }
            else
            {
                throw new InvalidOperationException();
            }
        }
        set
        {
            if (this.innerClass != null)
            {
                 this.innerClass.M_A = value;
            }
            else
            {
                throw new InvalidOperationException();
            }
        }
    }
}
0
ответ дан 1 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: