问题标签 [typedescriptor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 从源列表创建引用类型 List(Of Objects)
我使用以下代码使用源对象创建特定目标类型的新实例,其中我将所有原始类型属性值从源对象复制到目标对象:
现在。我有一个 List(Of Class1) 并希望使用相同的通用方法获取 List(Of Class2)。在这里,我想通过 List(Of Class1) 和目标类型(即 GetType(Class2)) 我怎样才能实现相同的目标?
c# - TypeDescriptor 属性检索不一致
我在玩的时候发现了一些有趣的东西System.ComponentModel.TypeDescriptor
:
当定义的Person
是一个类时,用-->
查找并返回的那行代码DescriptionAttribute
就好了。
当我更改Person
为结构时,代码找不到DescriptionAttribute
.
这种差异背后的原因是什么?对于值类型不存在的引用类型是否有一些魔力?
我知道-->
无论 Person 的实例是类还是结构,下面的代码行都会返回属性。这是因为方法调用返回的是执行加法的那个TypeDescriptionProvider
AddAttributes()
。
c# - 扩展属性网格中的集合而不对类进行任何修改?
这种方法适用于除集合之外的所有内容:
集合显示如下:
因此,即使它们是可扩展的,它们在属性网格中也没有多大用处。
这是我正在寻找的示例(从此处截取的屏幕截图):
链接的文章还包含一些代码,可以实现这一点,但需要修改原始类。在它和我之前的问题之间,我想出了一些想法,但我对System.ComponentModel
命名空间的使用不是很流利。
这是一个简化的测试用例(具有一个集合类型属性的自定义类,其中包含一个自定义类型的对象,该对象具有一个字符串属性):
建议的解决方案(伪代码,不编译)
然后在运行时应用这个自定义对象转换器。
它会像这样工作吗?我错过了什么?欢迎任何建议!
注意:以上是 VB.NET,但如果你会说 C#,请随意使用。
c# - 在运行时添加 mvc 模型验证属性
我有一个域实体 Person,它具有存储在 Dictionary 中的动态属性
每个属性都有一个名称、值,并且可以是不同的类型(枚举)[电子邮件、数字等],也可能需要一个属性。
当使用基于属性类型的相应 html 控件呈现时,这些属性将映射到 PropertyViewModel。
我还想添加 DataAnotaions 验证属性 Required、Email 等,并在属性映射到 PropertyViewModels 时在运行时使用客户端/服务器的内置验证
我在 TypeDescriptor.AddAttribute 上遇到了一些困难,但我无法让它工作。有人对这种情况有任何运气吗?
编辑:我终于得到了 TypeDescriptor 和自定义 ModelValidatorProver 的组合来工作。由于我在所有其他视图模型上使用验证属性并且不想混合验证模式,因此我不想制作一个自定义模型验证器,该模型验证器通过属性名和类型添加属性。
在渲染我的视图模型之前,我使用 TypeDescriptor TypeDescriptor.AddAttributes(propertyViewModel.Value, new EmailAttribute()); 装饰属性。TypeDescriptor.AddAttributes(propertyViewModel.Value, newRequiredAttribute());
并且由于 MVC 默认 DataAnnotationsModelValidatorProvider 不支持 TypeDescriptor 添加的属性。我创建了一个自定义 ModelValidation 提供程序,它使用 TypeDescriptor 来查找验证属性。
我在启动时用它替换当前
.net - 在 .Net 中查找所有未将 BrowsableAttribute 明确设置为 Yes 的属性
有没有办法找到给定类型的所有属性,而无需在.Net中将BrowsableAttribute显式设置为 Yes?
我尝试了以下代码但没有成功(默认情况下可浏览的所有属性也会返回):
c# - TypeDescriptor.GetConverter() 不返回我的转换器
我有一个带有自定义类型转换器的简单类型,它在运行时编译和加载。TypeDescriptor.GetConverter() 虽然找不到正确的转换器。这是一个独立的例子
这是示例的输出(在 vs 中编译)
我应该只是挖掘属性并自己创建实例,还是我在这里遗漏了其他东西?
也很奇怪!当在 LINQPad 中作为“C# 程序”运行时,它确实有效!这是输出。LINQPad 就绪源
知道 LINQPad 实际上做了什么不同的事情来让它找到正确的转换器吗?
c# - 将类型描述符添加到所有列表对于属性网格扩展的通用实现?
ExpandableObjectConverter
我为集合定义了一个自定义:
并且还有一个名为 的代理类ExpandableObjectManager
,它本质上是这样做的:
使用这种方法:
是否可以以所有泛型List<T>
都可以在属性网格中扩展的方式添加类型描述符?例如,给定一个简单的Employee
类:
我可以做到这一点(它有效,但仅适用于List<Employee>
):
我想涵盖所有内容T
,而不仅仅是Employee
,不必为每个可能的类写 1 行。我试过这个 - 没用:
TL;DR:SelectedObject
在属性网格中设置时列表的默认视图:
预期成绩:
无需为 . 添加类型描述符List<Employee>
,而是为所有List<T>
.
c# - TypeDescriptor 无法识别日期
我对 TypeDescriptor 类有疑问。
我有一个包含日期的 cookie - 日期被转换为字符串,然后使用一些辅助方法再次返回。
我的主要扩展方法之一用于进行转换,但是它会引发强制错误,因为日期不能从字符串转换回来。
这是我输出的消息:
22/01/2015 14:29:15 无法转换为 DateTime
对我来说看起来像一个日期时间!
这个问题可以通过使用来解决Convert.ToDateTime()
,所以一般的代码是可以的。我也将它用于其他地方的约会,迄今为止没有任何问题。
唯一的区别是我在这样的 linq 语句中间进行转换:
有任何想法吗?
c# - 将包含属性的上下文传递给 TypeConverter
我正在寻找一种将附加信息传递给 a 的方法TypeConverter
,以便在不创建自定义构造函数的情况下为转换提供一些上下文。
传递的额外信息将是包含我正在转换的属性的原始对象(在编译时称为接口)。它包含自己的属性,这些属性Id
对于查找转换相关信息很有用。
我已经查看了ITypeDescriptorContext的文档,但我还没有找到一个明确的示例来说明如何实现该接口。我也不相信这是我需要的工具。
目前,在我的代码中,我正在调用:
我想做的是类似的事情。
我希望能够使用其中一个重载来做我需要的事情,以便任何自定义转换器都可以继承TypeConverter
而不是具有自定义构造函数的基类,因为这将使依赖注入和使用DependencyResolver.Current.GetService(type)
MVC 来初始化的生活更轻松我的转换器。
有任何想法吗?
c# - 如何为枚举列表创建 InstanceDescriptor?
类似的问题:将 int list 作为参数传递给 web 用户控件
枚举类型是否有类似的示例?
我正在创建一个 asp.net 自定义控件,我想在其中将逗号分隔的枚举列表作为属性传递。
我正在编写一个TypeConverter
用于将逗号分隔的字符串值转换为枚举列表的方法。
在ConvertTo
方法中,
如何为InstanceDescriptor
枚举列表创建对象?
我目前的代码如下:
这失败并显示消息
我想知道为什么