Я не уверен насчет C #, но в TypeScript вы заявляете, что T extends MyClass
, что означает, что T
является подтипом в MyClass
, а не , идентичным . 1129] MyClass
. Таким образом, любое значение типа T
может быть присвоено переменной типа MyClass
, но не наоборот.
Определение типа из Array
предполагает, что y
можно назначить на X
, а не наоборот. Поэтому ошибочно вызывать Array
для параметра типа MyClass
. Одним из способов решения этой проблемы является объявление childList
типа Array
вместо Array
:
childList!: MyClass[];
Но, насколько я знаю, это проявится как проблема где-то еще, потому что при В какой-то момент вы захотите предположить, что T
идентичен MyClass
, и это просто не тот случай. Вы всегда можете исправить положение с помощью утверждений типа , но я думаю, что вам может потребоваться совершенно другое решение: полиморфное this
.
Вместо того, чтобы пытаться представлять круговой / рекурсивный тип, такой как Foo
, и гоняться за собственным хвостом, используйте тип this
, чтобы представить «тип текущего класса». Ваш MyClass
становится:
export abstract class MyClass {
childList!: this[];
foo() {
const index = this.childList.indexOf(this); // okay
}
}
И подклассы более или менее работают так, как вы ожидаете:
export class MyConcreteClass extends MyClass {
bar() {
this.childList.indexOf(this); // still works
}
}
И экземпляры обналичивают this
в фактический тип экземпляра:
const y = new MyConcreteClass();
y.childList; // type MyConcreteClass[];
Надежда, которая помогает; удачи!
Необходимо использовать sp_linkedserver для создания связанного сервера.
sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]
[ , [ @provider= ] 'provider_name' ]
[ , [ @datasrc= ] 'data_source' ]
[ , [ @location= ] 'location' ]
[ , [ @provstr= ] 'provider_string' ]
[ , [ @catalog= ] 'catalog' ]
[еще 113] информация, доступная на MSDN.
Решение я нашел:
1) Выполнение сохраненный proc
exec sp_addlinkedserver @server='10.0.0.51'
2), Проверяют, что серверы были связаны (перечисляет связанные серверы)
exec sp_linkedservers
3) Выполнение запрос с помощью формата
[10.0.0.51].DatabaseName.dbo.TableName
Как упомянуто, можно использовать sp_addlinkedserver. Однако можно также сделать это через Руководителя предприятия (2000) или Studio управления SQL Server (2005). Под узлом "безопасности" существует узел "Связанных серверов", который можно использовать, чтобы добавить и настроить Связанные серверы. Можно указать настройки безопасности, олицетворение, и т.д.
Посмотрите их для SQL Server 2000:
Связанные серверы Конфигурирования
безопасность Установления Для Связанных серверов
Конфигурирование Поставщики OLEDB для Распределенных запросов
Видят их для SQL Server 2005:
безопасность для Связанных серверов
Связанные серверы Конфигурирования для Делегации
Конфигурирование Поставщики OLEDB для Распределенных запросов