CommunityServer如何实现属性的动态扩展

拿 forum  做例子
forum继承自section   section继承自ExtendedAttributes
ExtendedAttributes提供了属性动态扩展的功能
ExtendedAttributes中维护一个
NameValueCollection extendedAttributes = new NameValueCollection();
保存所有扩展属性
先来看下forum中定义的一个扩展属性
None.gif public   string  ForumLogo
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif            
getdot.gif{return GetExtendedAttribute("ForumLogo");}
ExpandedSubBlockStart.gifContractedSubBlock.gif            
setdot.gif{SetExtendedAttribute("ForumLogo", value);}
ExpandedBlockEnd.gif        }
通过Get/Set ExtendedAttributes  在NameValueCollection中存取属性值 
最终通过DataProvidor存到数据库中去,下面是SqlCommonDataProvider.CreateUpdateDeleteSection中的代码
None.gif SerializerData data  =  section.GetSerializerData();
None.gif                    myCommand.Parameters.Add(
" @PropertyNames " , SqlDbType.NText).Value  =  data.Keys;
None.gif                    myCommand.Parameters.Add(
" @PropertyValues " , SqlDbType.NText).Value  =  data.Values;
GetSerializerData是 ExtendedAttributes定义的方法  用于将NameValueCollection中保存的属性序列化
Serializer.ConvertFromNameValueCollection(this.extendedAttributes,ref keys, ref values);


在cs中如果想给某个实体加一个属性,  只需要简单地在类中添加一个属性,  数据库的操作都根本不需要考虑。

当然动态扩展的属性不太容易实现检索。如果需要针对扩展属性进行检索的话,还得改数据表。
posted on 2005-08-09 11:15 huangyi 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/SupperCabbage/archive/2005/08/09/cs_ExtensionProperty.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值