在开发一种自定义字段类型时,会涉及到多个类。如何通过名字空间有效地组织这些类,是一个需要解决的问题。
下面我们以Microsoft SharePoint中预定义的Lookup字段类型为例,看一下定义一个字段类型所需的类及其组织方式。
1. Namespace: Microsoft.SharePoint
- SPFieldLookup
Lookup字段环境及属性信息。它不负责呈现及客户端交互。 - SPFieldLookupValue
被查阅行ID及查阅字段文本值。 - SPFieldLookupValueCollection
包含多个SPFieldLookupValue值的集合。 - SPInvalidLookupValuesException
无效SPFieldLookupValue异常。
2. Namespace: Microsoft.SharePoint.WebPartPages
- [internal]SPLookupFieldRenderWorker
LookupField呈现类。
3. Namespace: Microsoft.SharePoint.WebControls
- LookupField
在编辑/浏览页面中呈现出的Lookup字段控件。它继承自Microsoft.SharePoint.WebControls.BaseFieldControl类。 - MultipleLookupField
在编辑/浏览页面中呈现出的可多选的Lookup字段控件。它继承自LookupField类。
4. Namespace: Microsoft.SharePoint.MobileControls
- SPMobileLookupField
移动环境下的LookupField类。 - SPMobileMultipleLookupField
移动环境下的MultipleLookupField类。
5. Namespace: Microsoft.SharePoint.Client
- FieldLookup
LookupField客户端映射类。它除了LookupField类的属性外还包含“字段属性配置面板(Editor)”中的属性。它继承自Field : Microsoft.SharePoint.Client.ClientObject。 - FieldLookupPropertyNames
Lookup字段的“字段属性配置面板”属性类。保留用于内部用途,不建议外部代码使用。 - FieldLookupValue
SPFieldLookupValue的客户端映射类。它继承自ClientValueObject类。
6. Namespace: Microsoft.SharePoint.JSGrid
- LookupTypeInfo
- LookupTypeItem
7. Namespace: Microsoft.SharePoint.Upgrade
- [internal]AddLookupRelationships
- [internal]AddLookupRelationshipsFromFields
(注:以上内容有猜测成分,如有错误,望指正。谢谢!)
假设我们要开发一个名为CrossSiteLookup的自定义字段类型,根据以上分析,可按如下名字空间定义类:
1. MyCompany.SharePoint
- SPFieldCrossSiteLookup
继承自:Microsoft.SharePoint.SPFieldLookup
2. MyCompany.SharePoint.WebControls
- CrossSiteLookupField
继承自:Microsoft.SharePoint.WebControls.BaseFieldControl。 - MultipleCrossSiteLookupField
继承自:CrossSiteLookupField。 - CrossSiteLookupFieldEditor(“字段属性配置面板”控件类)
实现了:Microsoft.SharePoint.WebControls.IFieldEditor