.NET C#, передающая набор InterfaceImplementingClass, возражает против стандартной программы, которая берет набор Интерфейсных объектов

Максимальное количество конечных точек в одной группе синхронизации равно 30.

Максимальное количество локальных конечных точек в одной группе синхронизации равно 5.

enter image description here

У вас более 30 локальных БД, поэтому вы получаете ошибку при создании группы синхронизации.

Azure предлагает: создать несколько групп синей.

См. Ограничения на размеры обслуживания и базы данных .

Надеюсь, это поможет.

5
задан emkayultra 25 February 2009 в 00:40
поделиться

4 ответа

Это - та целая вещь ковариантности, о которой все говорят. Это будет работать в.NET 4.0.

Посмотрите здесь: http://blogs.msdn.com/charlie/archive/2008/10/28/linq-farm-covariance-and-contravariance-in-visual-studio-2010.aspx

Еще некоторое чтение:

http://www.infoq.com/news/2008/08/GenericVariance;jsessionid=188695B18864997E8D360E0EEED5983E

http://blogs.msdn.com/lucian/archive/2008/10/02/co-and-contra-variance-how-do-i-convert-a-list-of-apple-into-a-list-of-fruit.aspx

8
ответ дан 18 December 2019 в 09:10
поделиться

Это - классический пример использования дженериков; попробуйте:

public static void SomeRoutine<T>(IList<T> list) where T : IFormattable
{ ... }

Теперь внутри SomeRoutine у Вас есть доступ к весь IFormattable участники, но это будет работать с:

List<Guid>list; ...
SomeRoutine(list); // note no need to specify T

Править: Я дополнительно вел блог на различиях между 4,0 ковариантностями и дженериками для этого сценария.

5
ответ дан 18 December 2019 в 09:10
поделиться

Проблема состоит в том, что Список <IFormattable> не является только набором, из которого можно считать некоторый IFormattables, это - также набор, к которому можно добавить IFormattables. Список <Гуид> отвечает первому требованию, но не второму. Что, если SomeRoutine был

public void SomeRoutine(List<IFormattable> list)
{
    list.Add(5);
}

Это Int32 является IFormattable, таким образом, метод должен смочь добавить его к Списку <IFormattable>, который он попросил. Это не собирается работать, если компилятор позволяет Вам передать в Вашем Списке <Гуид>.

Новые функции C# 4.0, к которым относится BFree, позволят Вам сказать компилятор, когда эти вещи будут безопасны. Можно сказать также

  • Хотя я попросил ссылку IFormattable, я буду только читать ее. Если это - действительно ссылка Гуида затем, я могу безопасно рассматривать его как IFormattable, и я не попытаюсь присвоить Int32 ему.
  • Хотя я попросил ссылку IFormattable, я буду только писать в нее. Если это - действительно Ссылка на объект затем, я могу безопасно присвоить свой IFormattable ему, и не имеет значения, если текущее значение не является IFormattable, потому что я не считаю его.
3
ответ дан 18 December 2019 в 09:10
поделиться

Вы попытались объявить list как a List<IFormattable> объект вместо a List<Guid>? Это должно получить Вас мимо ошибки компиляции.

2
ответ дан 18 December 2019 в 09:10
поделиться
Другие вопросы по тегам:

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