IDictonary <строка, IParameter> - PullRequest
       15

IDictonary <строка, IParameter>

0 голосов
/ 02 февраля 2010

Я IDictionary<string, IParameter> QueryParameters и пытаюсь присвоить ему значения, однако мне это не удалось.

Пример кода:

public IDictionary<string, IParameter> QueryParameters 
{ 
  get 
  { 
     return new Dictionary<string, IParameter>(); 
  } 
}

Пожалуйста, кто-нибудь может привести пример или сообщить мне, какприсвоить значения IParameter.

Ответы [ 3 ]

1 голос
/ 02 февраля 2010

Проблема в том, что вы каждый раз возвращаете новый экземпляр. Попробуйте:

private readonly IDictionary<string, IParameter> m_QueryParameters = new Dictionary<string, IParameter>(); 

public IDictionary<string, IParameter> QueryParameters 
{ 
  get { return m_QueryParameters; } 
}

Теперь вы можете использовать его:

QueryParameters.Add( "key", new Parameter() );
0 голосов
/ 02 февраля 2010

Я не уверен, что вы спрашиваете, поскольку вы не присваиваете IParameter, который является типом. Что вы делаете, это создаете переменную, которая имеет тип IParameter и присваиваете этому. Для большей полноты я предполагаю, что IParameter является интерфейсом, и поэтому вам нужен конкретный класс, который расширяет IParameter и создает его экземпляр.

Таким образом SomeWWW

Параметр класса расширяет IParameter { ... }

Ваш код

IDictionary dict = obj. QueryParameters (); // получить словарь из вашего метода Параметр para = новый параметр ();

dict.Add ("test", para);

Также см. Ответ Далле для улучшений для вашего класса показано

0 голосов
/ 02 февраля 2010

Вы возвращаете новый экземпляр IDictionary<string, IParameter> каждый раз, когда вызывается свойство QueryParameters.

Вероятно, вам следует хранить этот экземпляр в классе, в котором он содержится:

class Foo
{
  private IDictionary<string, IParameter> dict =
    new Dictionary<string, IParameter>();

  public IDictionary<string, IParameter> QueryParameters 
  { 
    get
    {
      return dict;
    } 
  }
}

, а затем используйте его следующим образом:

void SomeFunc
{
   Foo f = new Foo();
   f.QueryParameters.Add("name", new Parameter());
   f.QueryParameters.Add("something else", new Parameter());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...