问题标签 [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.

0 投票
1 回答
90 浏览

.net - 从源列表创建引用类型 List(Of Objects)

我使用以下代码使用源对象创建特定目标类型的新实例,其中我将所有原始类型属性值从源对象复制到目标对象:

现在。我有一个 List(Of Class1) 并希望使用相同的通用方法获取 List(Of Class2)。在这里,我想通过 List(Of Class1) 和目标类型(即 GetType(Class2)) 我怎样才能实现相同的目标?

0 投票
1 回答
512 浏览

c# - TypeDescriptor 属性检索不一致

我在玩的时候发现了一些有趣的东西System.ComponentModel.TypeDescriptor

当定义的Person是一个类时,用-->查找并返回的那行代码DescriptionAttribute就好了。

当我更改Person为结构时,代码找不到DescriptionAttribute.

为什么?

这种差异背后的原因是什么?对于值类型不存在的引用类型是否有一些魔力?

我知道-->无论 Person 的实例是类还是结构,下面的代码行都会返回属性。这是因为方法调用返回的是执行加法的那个TypeDescriptionProviderAddAttributes()

0 投票
1 回答
3286 浏览

c# - 扩展属性网格中的集合而不对类进行任何修改?

这种方法适用于除集合之外的所有内容:

集合显示如下:

在此处输入图像描述

因此,即使它们是可扩展的,它们在属性网格中也没有多大用处。

这是我正在寻找的示例(从此处截取的屏幕截图):

在此处输入图像描述

链接的文章还包含一些代码,可以实现这一点,但需要修改原始类。在它和我之前的问题之间,我想出了一些想法,但我对System.ComponentModel命名空间的使用不是很流利。

这是一个简化的测试用例(具有一个集合类型属性的自定义类,其中包含一个自定义类型的对象,该对象具有一个字符串属性):

建议的解决方案(伪代码,不编译)

然后在运行时应用这个自定义对象转换器。

它会像这样工作吗?我错过了什么?欢迎任何建议!

注意:以上是 VB.NET,但如果你会说 C#,请随意使用。

0 投票
0 回答
1289 浏览

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 来查找验证属性。

我在启动时用它替换当前

0 投票
1 回答
161 浏览

.net - 在 .Net 中查找所有未将 BrowsableAttribute 明确设置为 Yes 的属性

有没有办法找到给定类型的所有属性,而无需在.Net中将BrowsableAttribute显式设置为 Yes?

我尝试了以下代码但没有成功(默认情况下可浏览的所有属性也会返回):

0 投票
1 回答
3773 浏览

c# - TypeDescriptor.GetConverter() 不返回我的转换器

我有一个带有自定义类型转换器的简单类型,它在运行时编译和加载。TypeDescriptor.GetConverter() 虽然找不到正确的转换器。这是一个独立的例子

这是示例的输出(在 vs 中编译)

我应该只是挖掘属性并自己创建实例,还是我在这里遗漏了其他东西?

也很奇怪!当在 LINQPad 中作为“C# 程序”运行时,它确实有效!这是输出。LINQPad 就绪源

知道 LINQPad 实际上做了什么不同的事情来让它找到正确的转换器吗?

0 投票
1 回答
1063 浏览

c# - 将类型描述符添加到所有列表对于属性网格扩展的通用实现?

ExpandableObjectConverter我为集合定义了一个自定义:

并且还有一个名为 的代理类ExpandableObjectManager,它本质上是这样做的:

使用这种方法:

是否可以以所有泛型List<T>都可以在属性网格中扩展的方式添加类型描述符?例如,给定一个简单的Employee类:

我可以做到这一点(它有效,但仅适用于List<Employee>):

我想涵盖所有内容T,而不仅仅是Employee,不必为每个可能的类写 1 行。我试过这个 - 没用:


TL;DR:SelectedObject在属性网格中设置时列表的默认视图:

在此处输入图像描述

预期成绩:

在此处输入图像描述

无需为 . 添加类型描述符List<Employee>,而是为所有List<T>.

0 投票
1 回答
141 浏览

c# - TypeDescriptor 无法识别日期

我对 TypeDescriptor 类有疑问。

我有一个包含日期的 cookie - 日期被转换为字符串,然后使用一些辅助方法再次返回。

我的主要扩展方法之一用于进行转换,但是它会引发强制错误,因为日期不能从字符串转换回来。

这是我输出的消息:

22/01/2015 14:29:15 无法转换为 DateTime

对我来说看起来像一个日期时间!

这个问题可以通过使用来解决Convert.ToDateTime(),所以一般的代码是可以的。我也将它用于其他地方的约会,迄今为止没有任何问题。

唯一的区别是我在这样的 linq 语句中间进行转换:

有任何想法吗?

0 投票
1 回答
6604 浏览

c# - 将包含属性的上下文传递给 TypeConverter

我正在寻找一种将附加信息传递给 a 的方法TypeConverter,以便在不创建自定义构造函数的情况下为转换提供一些上下文。

传递的额外信息将是包含我正在转换的属性的原始对象(在编译时称为接口)。它包含自己的属性,这些属性Id对于查找转换相关信息很有用。

我已经查看了ITypeDescriptorContext的文档,但我还没有找到一个明确的示例来说明如何实现该接口。我也不相信这是我需要的工具。

目前,在我的代码中,我正在调用:

我想做的是类似的事情。

我希望能够使用其中一个重载来做我需要的事情,以便任何自定义转换器都可以继承TypeConverter而不是具有自定义构造函数的基类,因为这将使依赖注入和使用DependencyResolver.Current.GetService(type)MVC 来初始化的生活更轻松我的转换器。

有任何想法吗?

0 投票
2 回答
365 浏览

c# - 如何为枚举列表创建 InstanceDescriptor?

类似的问题:将 int list 作为参数传递给 web 用户控件
枚举类型是否有类似的示例?

我正在创建一个 asp.net 自定义控件,我想在其中将逗号分隔的枚举列表作为属性传递。
我正在编写一个TypeConverter用于将逗号分隔的字符串值转换为枚举列表的方法。

ConvertTo方法中,
如何为InstanceDescriptor枚举列表创建对象?

我目前的代码如下:

这失败并显示消息

我想知道为什么