Compartilhar via


TypeDescriptor De classe

Define a tipo de dados de um parâmetro para um método.

Espaço para nome Microsoft.Office.Server.ApplicationRegistry.Administration
Conjunto de Módulos (Assembly) Microsoft.SharePoint.Portal (em microsoft.sharepoint.portal.dll)

A sintaxe

<SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel:=True)> _
<SharePointPermissionAttribute(SecurityAction.Demand, ObjectModel:=True)> _
Public Class TypeDescriptor
    Inherits AccessControlledMetadataObject

Dim instance As TypeDescriptor
[SharePointPermissionAttribute(SecurityAction.InheritanceDemand, ObjectModel=true)] 
[SharePointPermissionAttribute(SecurityAction.Demand, ObjectModel=true)] 
public class TypeDescriptor : AccessControlledMetadataObject

Comentários

Cada objeto Parameter T:Microsoft.Office.Server.ApplicationRegistry.MetadataModel.Parameter tem um objeto TypeDescriptor TypeDescriptor que define a tipo de dados do parâmetro.Ele é o objeto metadados mais complexa.É um hierárquico objeto que recursivamente descreve um abstrato compilado estrutura de dados de primitivos.Além disso, cada nó folha dos pontos árvore TypeDescriptor TypeDescriptor a um conjunto de valores possíveis usar como padrão especificado pelo MethodInstance T:Microsoft.Office.Server.ApplicationRegistry.MetadataModel.MethodInstance objeto Therefore, recebe um parâmetro, MethodInstance T:Microsoft.Office.Server.ApplicationRegistry.MetadataModel.MethodInstance TypeDescriptor é uma receita para criar instância um valor usar como padrão para esse parâmetro.

Além disso, forma TypeDescriptors o coração de capacidade do Business Data Catalog para transformar complexos Backend APIs em operações stereotypical simples como localização, FindSpecific, CheckAccess, anúncio assim por diante.Depois que você define informações detalhadas tipo via os metadados TypeDescriptor, você pode marca TypeDescriptors como slots onde identificadores ou filtrar valores podem ser conectados pela Business Data Catalog.De exemplo, um TypeDescriptor em um parâmetro que é marcado para receber o identificador para uma entidade, resulta em um método que pode ser usado como um SpecificFinder.

Use o IsCollection P:Microsoft.Office.Server.ApplicationRegistry.MetadataModel.TypeDescriptor.IsCollection propriedade em um objeto de retorno TypeDescriptor TypeDescriptor para indicar onde há coleções dentro de parâmetro de retorno.Considere um método da Web que retornar coleções de clientes, cada cliente do qual contém uma coleção de endereços.Neste exemplo, o sinalizador deve ser definida duas vezes ? uma vez na raiz [CLIENTE] nível e novamente em [a] .Address cliente [0] nível.No entanto, um objeto TypeDescriptor TypeDescriptor coleção pode ter apenas um único filho TypeDescriptor objeto abaixo dele que representa a estrutura na coleção.

Clientes comerciais Data Catalog such as o Business Data Web Parts não não identificador estruturas complexos.Por exemplo, considere a possibilidade de seguinte estruturas:

class Customer { String Name; Address address; } 
class Address { Street street; String city; String zip; }
class Street { int Block; String street; }

Para trabalho em torno dessa limitação, Business Data Catalog oferece suporte a concepção do "formatação complexa." Porque suporte clientes simple estruturas de primitivos, o Business Data Catalog será "processar" as estruturas complexo como formatado seqüências via dois mecanismos: um formatador String .NET Framework simples, ou uma mais complexa Renderer que um pode escrever usando qualquer linguagem .NET.Isso é feito por configuração dois String propriedades com os nomes " FormatString" (e.g. "{0}, {1} \n {2}, {3}") ou "RendererDefinition" (MyMethodName!MyTypeName, MyAssemblyName), respectivamente.O objeto Method método no RendererDefinition deve corresponder a um método estático .NET público em uma pública .NET Type que leva um argumento único, que é uma matriz de Objects.Em ambos os maiúsculas e minúsculas, que obtém passado para o Format formatar ou para o .NET Renderer é basicamente uma matriz de todos o filho primitivo valores da estrutura complexa, como modelado pela definição TypeDescriptor Business Data Catalog para essa estrutura.

Aviso

Formatação complexa é lenta; Use-lo somente se for absolutamente necessário.

Um controle chamado propriedade "ComplexFormatting" deve aparecer em qualquer estrutura que contém campos complexos, para habilitar processamento complexos.

Dica

Cuidado Quando indicação identificadores para formatação complexa, pois os identificadores são usados para entrada e saída para o aplicativo back-end (ao obter os endereços para um cliente, a aparência Business Data Catalog para a chave do cliente fornecer ao GetAddressesForCustomer GetAddressesForCustomer método).Se um identificador tem sido processado como um formatado seqüência de caracteres, todas as informações tipo serão perdidas e ela mais pode ser usada como entrada.

Exemplo

O seguinte exemplo de código mostra como criar um método, completo com instâncias método, filtro descritores, valores usar como padrão e descritores tipo, para a entidade ProductModel em banco de dados o AdventureWorks.

Prerequisites

Adicione o seguinte referências do projeto no seu projeto código do aplicativo console antes execução neste exemplo:

  • Microsoft.SharePoint

  • Microsoft.SharePoint.Portal

  • Microsoft.Office.Server

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server.ApplicationRegistry.Administration;
using Microsoft.Office.Server.ApplicationRegistry.Infrastructure;
using WSSAdmin = Microsoft.SharePoint.Administration;
using OSSAdmin = Microsoft.Office.Server.Administration;

namespace Microsoft.SDK.SharePointServer.Samples
{
    class GetStartedAndCreateSystem
    {
        const string yourSSPName ="EnterYourSSPNameHere";

        static void Main(string[] args)
        {
            SetupBDC();
            CreateFinderMethod();
            Console.WriteLine("Press any key to exit...");
            Console.Read();
        }
        static void SetupBDC()
        {
            SqlSessionProvider.Instance().SetSharedResourceProviderToUse(yourSSPName);
        }
        static void CreateFinderMethod()
        {

            LobSystemInstance mySysInstance = null;
            LobSystemInstanceCollection sysInsCollection = ApplicationRegistry.Instance.GetLobSystemInstancesLikeName("AdventureWorksSampleFromCode");
            foreach (LobSystemInstance sysInstance in sysInsCollection)
            {
                if (sysInstance.Name == "AdventureWorksSampleFromCode")
                {
                    mySysInstance = sysInstance;
                    break;
                }
            }
            EntityCollection entityColl = mySysInstance.LobSystem.Entities;
            foreach (Entity entity in entityColl)
            {
                if (entity.Name == "ProductModel")
                {
                    Method meth = entity.Methods.Create("GetProductModels", true, true);
                    meth.Properties.Add("RdbCommandText", "SELECT ProductModelID, Name, CatalogDescription FROM ProductModel WHERE Name LIKE @Name");
                    meth.Properties.Add("RdbCommandType", System.Data.CommandType.Text);
                    FilterDescriptor fd = meth.FilterDescriptors.Create("Name", true, "Microsoft.Office.Server.ApplicationRegistry.Runtime.WildcardFilter");
                    Parameter p1 = meth.Parameters.Create("@Name", true, Microsoft.Office.Server.ApplicationRegistry.MetadataModel.DirectionType.In, "Microsoft.Office.Server.ApplicationRegistry.Infrastructure.DotNetTypeReflector");
                    TypeDescriptor td1 = p1.CreateRootTypeDescriptor("Name", true, "System.String", null, fd, false);
                    Parameter p2 = meth.Parameters.Create("ProductModels", true, Microsoft.Office.Server.ApplicationRegistry.MetadataModel.DirectionType.Return, "Microsoft.Office.Server.ApplicationRegistry.Infrastructure.DotNetTypeReflector");
                    IList<Identifier> ids = new List<Identifier>(entity.Identifiers);
                    Identifier id = ids[0];
                    TypeDescriptor td2 = p2.CreateRootTypeDescriptor("ProductModelDataReader", true, "System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", null, null, true);
                    TypeDescriptor td21 = td2.ChildTypeDescriptors.Create("ProductModelDataRecord", true, "System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", null, null, false);
                    TypeDescriptor td210 = td21.ChildTypeDescriptors.Create("ProductModelID", true, "System.Int32", id, null, false);
                    TypeDescriptor td211 = td21.ChildTypeDescriptors.Create("Name", true, "System.String", null, null, false);
                    TypeDescriptor td212 = td21.ChildTypeDescriptors.Create("CatalogDescription", true, "System.String", null, null, false);
                    MethodInstance methInst1 = meth.MethodInstances.Create("ProductModelFinder", true, td2, Microsoft.Office.Server.ApplicationRegistry.MetadataModel.MethodInstanceType.Finder);
                    MethodInstance methInst2 = meth.MethodInstances.Create("ProductModelSpecificFinder", true, td2, Microsoft.Office.Server.ApplicationRegistry.MetadataModel.MethodInstanceType.SpecificFinder);
                    IList<MethodInstance> methInstCollection = new List<MethodInstance>(entity.MethodInstances);
                    td1.SetDefaultValue(methInstCollection[0].Id, "%");
                    td1.SetDefaultValue(methInstCollection[1].Id, "%");
                    Console.WriteLine("Created the finder method successfully.");
                    break;
                }
            }
        }
    }
}

Hierarquia de herança

System.Object
   Microsoft.Office.Server.ApplicationRegistry.Administration.MetadataObject
     Microsoft.Office.Server.ApplicationRegistry.Administration.AccessControlledMetadataObject
      Microsoft.Office.Server.ApplicationRegistry.Administration.TypeDescriptor

Segmento de segurança

Qualquer público estático ( compartilhadas Na Visual Basic) os membros desse tipo são segmento seguro. Os membros de instância não são garantia ser segmento seguro.

Consulte também

Referência

TypeDescriptor Membros
Microsoft.Office.Server.ApplicationRegistry.Administration De espaço para nome