TypeDescriptorCollection.Create 方法 (Microsoft.Office.Server.ApplicationRegistry.Administration)
Creates a TypeDescriptor object.
命名空间: Microsoft.Office.Server.ApplicationRegistry.Administration
程序集: Microsoft.SharePoint.Portal (在 microsoft.sharepoint.portal.dll 中)
语法
声明
Public Function Create ( _
name As String, _
isCached As Boolean, _
typeName As String, _
identifier As Identifier, _
filterDescriptor As FilterDescriptor, _
isCollection As Boolean _
) As TypeDescriptor
用法
Dim instance As TypeDescriptorCollection
Dim name As String
Dim isCached As Boolean
Dim typeName As String
Dim identifier As Identifier
Dim filterDescriptor As FilterDescriptor
Dim isCollection As Boolean
Dim returnValue As TypeDescriptor
returnValue = instance.Create(name, isCached, typeName, identifier, filterDescriptor, isCollection)
public TypeDescriptor Create (
string name,
bool isCached,
string typeName,
Identifier identifier,
FilterDescriptor filterDescriptor,
bool isCollection
)
参数
- name
The name of the TypeDescriptor object.
- isCached
true if cached; otherwise, false.
- typeName
The TypeName of the TypeDescriptor object.
- identifier
If the TypeDescriptor object represents an identifier, then the Identifier object, otherwise null.
- filterDescriptor
If the TypeDescriptor object is associated with a filter descriptor, then the FilterDescriptor object, otherwise null.
- isCollection
True if the TypeDescriptor object represents a collection, otherwise false.
返回值
A TypeDescriptor object.
示例
The following code example shows how to create a method, complete with method instances, filter descriptors, default values, and type descriptors, for the ProductModel entity in the AdventureWorks2000 database.
Prerequisites
Ensure a Shared Service Provider is already created.
Create an LobSystem instance and set connection parameters as shown in 如何:使用管理对象模型创建 LobSystem.
Create the ProductModel entity as shown in 如何:使用管理对象模型创建实体
Replace the constant value EnterYourSSPNameHere in the code with the name of your Shared Resource Provider.
Project References
Add the following Project References in your console application code project before running this sample:
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;
}
}
}
}
}
另请参阅
参考
TypeDescriptorCollection 类
TypeDescriptorCollection 成员
Microsoft.Office.Server.ApplicationRegistry.Administration 命名空间