Caliburn笔记-元数据(Metadata)管理(wpf框架)
2009-12-25 10:45 Clingingboy 阅读(1218) 评论(0) 编辑 收藏 举报在.net中允许我们使用元数据(即Attribute),在使用Action时,结合元数据可以为框架功能提供一些便利.
caliburn提供了很多的元数据,其皆继承自IMetadata接口,该接口即一个空元数据标记接口而已,继承此接口的元数据则表明为属于caliburn功能范围内的元数据,方便管理.
IMetadataContainer接口提供了对IMetadata的管理
MetadataContainer为IMetadataContainer默认实现,继承MetadataContainer的类则均具有管理元数据的功能
/// <summary> /// An implementation of <see cref="IMetadataContainer"/>. /// </summary> public class MetadataContainer : PropertyChangedBase, IMetadataContainer { private List<IMetadata> _metadata; /// <summary> /// Adds the metadata from the provided member to the collection. /// </summary> /// <param name="member">The member.</param> protected virtual void AddMetadataFrom(MemberInfo member) { member.GetCustomAttributes(true) .OfType<IMetadata>() .Apply(AddMetadata); } /// <summary> /// Adds metadata to the store. /// </summary> /// <param name="metadata">The metadata.</param> public virtual void AddMetadata(IMetadata metadata) { if(_metadata == null) _metadata = new List<IMetadata>(); _metadata.Add(metadata); } /// <summary> /// Retrieves metadata from the store. /// </summary> /// <typeparam name="T"></typeparam> /// <returns></returns> public virtual T GetMetadata<T>() where T : IMetadata { return _metadata == null ? default(T) : _metadata.OfType<T>().FirstOrDefault(); } /// <summary> /// Gets the matching metadata. /// </summary> /// <typeparam name="T">The type to match.</typeparam> /// <returns>The matches</returns> public virtual IEnumerable<T> GetMatchingMetadata<T>() where T : IMetadata { return _metadata == null ? new List<T>() : _metadata.OfType<T>(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现