IVsDataProvider.TryCreateObject<TSite> - метод (Guid, Type, TSite)
Пытается создать экземпляр определенной сущности поддержки DDEX для конкретного источника данных DDEX, реализованный поставщиком DDEX, находящуюся с указанным объектом сайта.
Пространство имен: Microsoft.VisualStudio.Data.Core
Сборка: Microsoft.VisualStudio.Data.Core (в Microsoft.VisualStudio.Data.Core.dll)
Синтаксис
'Декларация
Function TryCreateObject(Of TSite) ( _
source As Guid, _
objType As Type, _
site As TSite _
) As Object
Object TryCreateObject<TSite>(
Guid source,
Type objType,
TSite site
)
generic<typename TSite>
Object^ TryCreateObject(
Guid source,
Type^ objType,
TSite site
)
abstract TryCreateObject :
source:Guid *
objType:Type *
site:'TSite -> Object
JScript не поддерживает универсальные типы и методы.
Параметры типа
- TSite
Сайт.
Параметры
source
Тип: GuidИдентификатор источника данных DDEX или Empty для каких-либо конкретного источника данных.
objType
Тип: TypeТип сущности поддержки DDEX.
site
Тип: TSiteЭкземпляр объекта, если сайт новую сущность поддержки DDEX.
Возвращаемое значение
Тип: Object
Экземпляр определенной сущности поддержки DDEX, реализуемый поставщиком DDEX, расположенным с указанным объектом сайта, если поставщик поддерживает DDEX его; в противном случае nullссылка NULL (Nothing в Visual Basic).
Исключения
Исключение | Условие |
---|---|
ArgumentNullException | Значение параметра objType — nullссылка NULL (Nothing в Visual Basic). |
DataProviderException | Создание нового экземпляра сущности поддержки сгенерировало исключение, ли посредством вызова CreateInstance посредством отражения или через реализацию метода CreateObject или CreateObject поставщика DDEX, иначе реализации по умолчанию или клиентской объектной (при наличии), сбой. |
Заметки
Этот метод выполняет различные действия, чтобы создать экземпляр указанного типа сущности поддержки DDEX.
Проверка реестра
В начале метода, проверив реестра сведения об этой сущности поддержки. Выглядит в SupportedObjects ключом поставщика для раздела реестра, который соответствует типу сущности поддержки. Если источник данных не пустой DDEX передается в метод, также ищет подраздел для этого источника данных DDEX. Если любой ключ найден, он получает значение по умолчанию ключа. Если значение ключа не nullссылка NULL (Nothing в Visual Basic) и не пусто, он получает значение, которое является именем типа класса, реализующего сущность поддержки. Затем он извлекает полных сведений, начиная с базой кода, и, если это nullссылка NULL (Nothing в Visual Basic), сборка значение. Codebase значение полный путь сборки, содержащей тип зарегистрирован. Сборка значение полное имя сборки, которая может быть размещена и загружается средой CLR (CLR).
Если сущность поддержки наследует от базового интерфейса IVsDataSupport, цель которого — это единственная возвращать поток XML, метод ищет дополнительные значения, которые могут описывать расположение XML-файла, можно передать базовой реализации поддержки конкретной сущности. Один пример может быть классом DataObjectSupport, определенный в сборке платформы стандартной DDEX. Метод сначала ищет XmlFile представляет собой значение, которое может и не может быть полным именем XML-файла на диске. Если это значение существует, метод ищет XmlPath значение, которое может содержать путь неправомочного XmlFile значение. Разделение пути и имени файла важно при помещении локализованные версии файла XML на один и тот же путь. Если XmlFile значение не существует, то метод ищет XmlResource значение, указывающее имя ресурса, который содержит XML в сборке. Затем он затем ищет полных сведений, начиная с XmlCodeBase значение, и, если это nullссылка NULL (Nothing в Visual Basic), XmlAssembly значение. Значение XmlCodeBase полный путь к сборке, содержащей указанный ресурс. Значение XmlAssembly полное имя сборки, которая может быть размещена и загружается средой CLR.
Если в этот момент указано, что нет достаточной информации в реестре для создания экземпляра сущности поддержки DDEX, шаг проверки реестра пропущен. В этом случае метод возвращается к конкретной реализации интерфейса IVsDataSourceSpecializer или IVsDataProviderObjectFactory, если он реализуется поставщиком DDEX. В противном случае метод загружает сборку через соответствующую базу кода или полное имя (в этом порядке) и получает тип из сборки. Если этот процесс не найдет соответствующий тип, DataProviderException исключение.
Наконец, создается экземпляр типа. Если сущность поддержки наследует от базового интерфейса IVsDataSupport и дополнительные сведения о расположении файла XML была зарегистрирована поставщиком, то эти данные передаются как аргументы конструктора типа. Эти данные передаются или в качестве имени файла XML и путь (2 строк) или как имя ресурсов XML и разрешено объект Assembly (строка и объект Assembly ). В последнем случае DataProviderException возникает, если сборка не может быть загружена. Если любая другая ошибка возникает, когда экземпляр типа, создание или созданный тип не реализуется ожидается тип сущности поддержки, DataProviderException исключение.
Источник Specializer вызова или объекта фабрики поставщика
Если проверка реестра не находит достаточных сведений для создания экземпляра сущности поддержки, называются specializer поставщика источника DDEX (если таковой существует) или объекта фабрики метод CreateObject (для поставщика на основе пакета). Если источник данных не пустой DDEX передается этому методу, specializer поставщика источника (если таковой существует), называется первым. Если этот метод создает исключение NotImplementedException или не возвращает никакого новый экземпляр, он вызывает объекта фабрики поставщика, если один из них, также игнорируется любое NotImplementedException, хотя. Для всех других исключений DataProviderException исключение.
Создайте экземпляр по умолчанию
Если объект не был создан этой точкой, это означает, что поставщик не реализует DDEX сущность поддержки. Однако если сущность поддержки определяет реализацию объекта по умолчанию, то будет создан экземпляр объекта по умолчанию.
Примечание
DDEX в Visual Studio 2005 не поддерживает реализацию объекта по умолчанию, поэтому не существует объект по умолчанию не будет создан.
Расположение объекта
Все вновь созданные экземпляры DDEX поддерживают сущностей, использующих этот метод может быть расположен с 3 стандартными объектами сайта. Эти объекты следующим образом: объект глобального поставщика служб, объект IVsDataProvider, создавшего его и объект IVsDataSource, представляющий источник данных для DDEX, что он создан для, если не пустой источник данных DDEX были предоставлены. Экземпляры расположены только если вновь созданный экземпляр реализует интерфейс IVsDataSiteableObject<T> с универсальными типами IServiceProvider, IVsDataProvider и/или IVsDataSource соответственно.
После этих стандартных объектов сайта, если пользовательский объект сайта передается в вызывающим объектом, новый экземпляр будет расположен с пользовательским объектом, когда он реализует интерфейс IVsDataSiteableObject<T>.
Создание клиентского объекта
Последний шаг в создать сущность поддержки DDEX позволяет создать объект оболочки клиента, если сущность определяется одним. Это делается путем проверки тип сущности поддержки для экземпляра DataClientObjectAttribute. Если этот экземпляр существует, то будет создан экземпляр объекта, указанного в соответствующей идентификатором класса и новый объект поставщика передается в этой клиентского объекта. После того, как они создаются клиентские объекты, расположенные с тем же набором стандартных и пользовательских объектов сайта, основной объект поставщика был предложен.
Примеры
В следующем примере кода показано, как вызвать этот метод для создания одной из стандартных сущностей поддержки.
using System;
using Microsoft.VisualStudio.Data.Core;
using Microsoft.VisualStudio.Data.Services.SupportEntities;
public class DDEX_IVsDataProviderExample10
{
public static IVsDataConnectionProperties CreateConnectionProperties(
IVsDataProvider provider)
{
return provider.TryCreateObject<IVsDataConnectionProperties>();
}
}
Безопасность платформы .NET Framework
- Полное доверие для непосредственно вызывающего метода. Этот член не может быть использован частично доверенным кодом. Для получения дополнительной информации см. Использование библиотек из не вполне надежного кода.