- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
你可以用它们做的事情有明显的重叠。 ComponentModel 反射只是在 System.Reflection 之上更友好一点的层吗?
最佳答案
不 - 还有更多。 ComponentModel 允许您做一些 DLR 类型的事情,例如运行时属性。这就是 DataView 向网格公开列的方式——它们不是反射属性——它们是运行时属性。此处的关键字是 ICustomTypeDescriptor
和 TypeDescriptionProvider
。
此模型还允许抽象和间接。例如,如果您正在对属性进行大量反射(reflection),请考虑 HyperDescriptor - 这是我编写的一个实用程序,它使用自定义 PropertyDescriptor
实现将反射模型交换为预编译模型,以实现巨大的性能提升。
在用法上,还有一些其他的区别; ComponentModel 仅支持成员上任何属性的单个实例(与反射不同,反射允许多个相似的属性)。它以数据为中心 - 因此属性和事件(主要用于更改通知)一样存在 - 但没有字段或方法。
它对 i18n 也有很好的支持——因为 DisplayName 等可以动态定制。
但是,ComponentModel 不(直接)兼容 LINQ(特别是 MemberExpression)之类的东西 - 因为它想要绑定(bind)到反射数据。
最后,ComponentModel 在 IDE 中被 PropertyGrid 之类的东西大量使用(这就是工具提示的额外属性的工作方式),但同样几乎所有 UI 数据绑定(bind)都是通过 ComponentModel 发生的(因为这允许绑定(bind)支持DataTable、类以及您能想到的任何其他内容)。
关于c# - ComponentModel 反射(例如 PropertyDescriptor)和标准反射(例如 PropertyInfo)之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/301356/
有人可以指向我介绍该新 namespace 的网络广播或教程/视频,以及如何使用它来帮助验证诸如用户输入之类的数据吗? 最佳答案 试试这个(对不起,不是视觉上的): ASP.NET MVC Tip #
是否可以序列化(二进制)System.ComponentModel.Container? 最佳答案 不,它没有标记为可序列化。 关于c# - 序列化 ComponentModel.Container?
我正在 ASP.NET 中创建自定义 UserControl,我正在使用 System.ComponentModel.Attributes 用不同的东西装饰属性。默认情况下,ASP.NET 显示所有公
我有一个接受任何对象的函数,然后它从作为输入的属性或字段中获取值。 目前看起来是这样的: private string GetFieldValue(object o, Field f) { //fi
我在理解容器/组件模型如何在 C# 中相互交互时遇到一些困难。我知道组件如何包含一个站点对象,该对象包含有关容器和组件的信息。但是,假设我有以下代码: using System; using Syst
我正在使用程序集绑定(bind),但仍然收到此错误: 无法加载文件或程序集“System.ComponentModel.Annotations,Version=4.2.1.0,Culture=neut
我遇到了一个难以诊断的奇怪问题。将包含命名空间 Matrix.System 的程序集引用添加到 Windows 服务项目后,我现在在编译服务时遇到此错误: The type or namespace
我有一个 .Net Core 3.0 windows 桌面简单项目,它引用了以下 NuGet 包: Microsoft.NETCore.Platforms(3.0.0-preview.3.19128.
我的设计时组件中有许多类别默认展开。 我想让它们默认显示为折叠状态,或者至少在用户看到它们之前有问题地折叠它们。 [Category("Misc")] public int Id { // .
有人能解释一下我们何时以及为什么应该使用 System.ComponentModel.Container 吗?最近我遇到了这个类的使用 here ,但真的不明白有什么好处可以让我们上这门课。 最佳答案
我正在尝试清除我的 C# 项目中的一些警告,其中有几个警告说: Warning 1 The field 'Namespace.Class.components' is assigned but its
我在枚举中使用 Description 属性为枚举字段提供用户友好的名称。例如 public enum InstallationType { [Description("Forward of
我正在尝试在我的 WPF 项目中使用 DataAnnotations 来指定字符串的最大长度,如下所示: using System.ComponentModel.DataAnnotations; 但是
我正在使用 MVC 4、.net 4 和 Entity Framework 6。我的项目正在我的开发机器上构建,该机器安装了 Visual Studio 2010,但在我的构建服务器上我遇到了命名空间
我正在尝试使用 System.ComponentModel.DesignerCategory 防止扩展标签页组件在设计器中自动打开的属性。关于其他 StackOverflow 问题的建议 1 , 2
我刚刚开始使用Caliburn.Micro,它说要导入 System.ComponentModel.Composition.Initialization 在 System.ComponentModel
我正在使用带有 POCO 的 Entity Framework 4 制作 MVC 3 应用程序。我想尽可能多地注释我的所有实体。我遇到了一个问题,但是我找不到关于每个属性含义的好的文档。有些非常直接,
我有一个 View 模型,其中属性具有显示名称。我现在正在制作一个 Excel 工作表,其中包含与网页中的网格相同的数据。我正在使用 closed xml (使用 openxml)在服务器上创建 Ex
我正在尝试将我在 archlinux 上的 monodevelop 中制作的应用程序捆绑在一起。 在 monodevelop 中构建应用程序后,我将使用以下命令打包: mkbundle --deps
我正在尝试在我的系统中实现多语言支持,工作中的其他系统为此使用从他们已经使用了一段时间的数据库生成的 xmlfiles,所以他们希望我也使用它。 我已经设法翻译了我的表单模型中除显示名称之外的所有内容
我是一名优秀的程序员,十分优秀!