[方法] 複数値プロパティを作成する
プロパティで複数の値がサポートされるようになりました。この改善点は、さまざまなシナリオで利用できます。たとえば、ユーザーの関心事や専門分野のように通常は複数の値を持つプロパティを定義する場合などです。
オブジェクト モデルの IsMultiValued パラメータは、プロパティが複数値プロパティであるかどうかを示します。ただし、プロパティのデータ型と同様に、このパラメータは、いったん設定した後は変更できません。
オブジェクト モデルでは、複数値プロパティの複数の値は ArrayList オブジェクトとして返されます。コレクション内の値の順序は、更新順序と同じです。例については、「[方法] 複数の値を持つプロパティに複数の値を設定する」を参照してください。
複数値プロパティもインデックス付けを行うことができます。現在、Microsoft Office SharePoint Server 2007 でのエンタープライズ検索 では、複数値プロパティの Contains 句および Equals 句がサポートされています。
Office SharePoint Server 2007 では、接続ソースの複数値プロパティを、単一値のポータル プロパティにマップできます。プロパティをインポートする場合、インポート操作ではソースの最初の値を取得しようとします。
次のコード例は、複数値プロパティの作成方法を示しています。この例を使用する場合は、servername を実際の値に置き換えてください。また、Microsoft Visual Studio プロジェクトで以下の参照を追加してください。
Microsoft.Office.Server
Microsoft.SharePoint
System.Web
例
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Server;
using Microsoft.Office.Server.Administration;
using Microsoft.Office.Server.UserProfiles;
using Microsoft.SharePoint;
using System.Web;
namespace UserProfilesApp
{
class Program
{
static void Main(string[] args)
{
using (SPSite site = new SPSite("https://servername"))
{
ServerContext context =
ServerContext.GetContext(site);
UserProfileManager profileManager = new
UserProfileManager(context);
try
{
//Get the properties
PropertyCollection pc =
profileManager.Properties;
Property p = pc.Create(false);
p.Name = "PublishedPapers";
p.DisplayName = "Published Papers";
p.Type = "string";
p.IsMultivalued = true;
p.IsUserEditable = true;
p.IsVisibleOnEditor = true;
p.IsVisibleOnViewer = true;
p.DefaultPrivacy = Privacy.Public;
p.PrivacyPolicy = PrivacyPolicy.OptIn;
pc.Add(p); }
catch (DuplicateEntryException e)
{
Console.WriteLine(e.ToString());
}
catch (System.Exception e2)
{
Console.WriteLine(e2.ToString());
}
}
}
}
}