Добавьте 'набор' к свойствам интерфейса в C#

Вы можете установить this с таким способом .bind и вызвать twitter.get в componentDidMount , как в этом example

componentDidMount: function() {
   twitter.get('statuses/user_timeline', function(error, data) {
      this.setState({tweets: data})
   }.bind(this)); // set this that refers to you React component
}

Example

18
задан strager 8 March 2009 в 16:30
поделиться

3 ответа

Я не вижу оснований, почему то, что Вы отправили, не должно работать? Просто сделал быстрый тест, и он компилирует хорошо, но дает предупреждение о сокрытии. Это может быть зафиксировано путем добавления нового ключевого слова, как это:

public interface IMutableUser : IUser
{
    new string Username { get; set; }
}

альтернатива должна была бы добавить явные методы установки; например:

public interface IMutableUser : IUser
{
    void SetUsername(string value);
}

, Конечно, я предпочел бы использовать методы set, но если это не возможно, я предполагаю, что Вы делаете то, к чему Вы имеете.

14
ответ дан 30 November 2019 в 07:56
поделиться

Вы могли использовать абстрактный класс:

interface IUser
{
    string UserName
    {
        get;
    }
}

abstract class MutableUser : IUser
{
    public virtual string UserName
    {
        get;
        set;
    }
}

Другая возможность состоит в том, чтобы иметь это:

interface IUser
{
    string UserName
    {
        get;
    }
}

interface IMutableUser
{
    string UserName
    {
        get;
        set;
    }
}

class User : IUser, IMutableUser
{
    public string UserName { get; set; }
}
9
ответ дан 30 November 2019 в 07:56
поделиться

Можно "переопределить" свойства в интерфейсе путем явной реализации интерфейсов. Ответ Chris вероятен все, в чем Вы будете нуждаться для сценария, который Вы обрисовали в общих чертах, но рассматриваете немного более сложный сценарий, где Вам нужен метод get/метод set на Вашем классе, но интерфейс только определяет метода get. Можно обойти это путем выполнения следующего:

public class MyUser : IUser
{

    IUser.MyProperty { get { return "something"; } }

    public MyProperty { get; set; }

}

Путем явной реализации IUser.MyProperty, Вы удовлетворяете контракт. Однако путем обеспечения общественности MyProperty, API для объекта никогда не будет показывать явную версию интерфейса и будет всегда использовать MyProperty с получением/устанавливанием.

8
ответ дан 30 November 2019 в 07:56
поделиться
Другие вопросы по тегам:

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