问题标签 [system.componentmodel]

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 投票
0 回答
42 浏览

asp.net-mvc - 覆盖所有验证属性的错误消息

我正在使用System.ComponentModel.DataAnnotations属性进行验证,但希望不是从硬编码的字符串或资源而是从外部服务获取错误消息。到目前为止,我发现的解决方案需要太多代码 - 为每个属性创建适配器工厂,创建验证器提供程序并DataAnnotationsModelValidatorProviderModelValidatorProviders.Providers我自己的替换。有没有更好的方法,某种扩展点,代码可以“包装”所有对验证的调用,并且仍然可以访问属性本身,因为我使用ErrorMessageResourceTypeErrorMessageResourceName作为在外部服务中定位正确字符串的键。

(我使用的是 MVC 5,而不是 ASP.NET Core,这个问题看起来可以解决)

0 投票
2 回答
9584 浏览

c# - 是否可以将自定义属性添加到 c# 枚举对象?

使用 c# 是否可以使用关联每个枚举项的属性?

我使用了描述属性enum项目添加了英文描述。

要为每个项目添加英文描述,我已完成以下操作

enum然后我在我的调用中添加了一个扩展方法,GetDescription()它允许我像这样获得描述

但是,如果我能够分配一个类或构造一个新对象,它将对我有很大帮助。

有可能/我怎样才能做类似以下的事情?

或使用课程

0 投票
3 回答
13170 浏览

c# - 从标记的枚举中获取描述属性

我正在尝试创建一个扩展方法,该方法将返回一个仅包含给定的设置值的List<string>所有属性。Description[Flags] Enum

例如,假设我在 C# 代码中声明了以下枚举:

然后将变量设置为:

所以,我想创建的电话是:

最终结果将是:

我创建了一个扩展方法,用于获取不能设置多个标志的枚举的单个描述属性,如下所示:

而且我在网上找到了一些关于如何获取给定 Enum 类型的所有 Description 属性的答案(例如这里),但是我在编写通用扩展方法以仅返回 set attributes的描述列表时遇到问题。

任何帮助将非常感激。

谢谢!!

0 投票
1 回答
300 浏览

c# - 有没有办法从自定义 TypeDescriptionProvider 访问 ITypeDescriptorContext 或 IServiceProvider 对象?

这似乎是TypeDescriptor动态元数据架构中的一个奇怪差距。所有TypeConverterUITypeEditor其他动态设计器、编辑器和转换器类都提供对IServiceProvider允许将设计上下文传递给实现类的对象的访问。

出于某种原因,这在TypeDescriptionProvider,CustomTypeDescriptor和相关的接口中是绝对缺失的。有没有办法在动态扩展类的元数据/属性时访问编辑器设计上下文?

0 投票
0 回答
314 浏览

wpf - 如何让 WPF XAML 设计器与 NET Standard 2.0 库中的 IValidatableObject 很好地配合使用?

背景:

使用 Visual Studio 2017 v15.4(没有 ReSharper 或任何奇怪的扩展)

Repro 解决方案包括 2 个项目:

  1. WPF 项目:.NET 4.6.1,使用 NuGet PackageReference 格式
  2. 类库:NET Standard 2.0

这两个项目都System.ComponentModel.Annotations安装了 NuGet 包。

问题

将 WPF 项目的 NuGet 格式从旧packages.config升级到新PackageReference后,我开始遇到设计时错误: 在此处输入图像描述

或者有时更刺耳的味道: 在此处输入图像描述

首先,以下 ViewModel 代码可以正常工作:

但是,如果我随后在我的 NET Standard 项目中定义了一个相同的类,并将其作为一个类型包含在我的 ViewModel 中,则会产生错误。

比较这两个类的 IValidatableObject 上的 F12:

WPF 版本:

NET 标准 2.0 版本:

很明显,在具有不同名称的程序集中定义了相同的类型和命名空间——而不仅仅是程序集版本。

如何让 XAML 设计器成功找到需要使用的任何程序集IValidatableObject

我尝试过的事情

  • 安装 VS v15.5 预览版并将 WPF 项目定位到 .NET 4.7(也是 15.5 预览版 2 和 3,.NET 4.7.1)
  • 添加对 WPF 项目的旧System.ComponentModel.DataAnnotations引用(有和没有 NuGet 版本)
  • 恢复到 packages.config 格式(这实际上并没有成功;看来我被 PackageReference 困住了!)
  • 从项目的输出文件夹中获取 System.ComponentModel.Annotations.dll 的副本并直接引用它(VS 不允许我这样做)
  • 添加bindingRedirect到我的 App.config
  • 添加<DependsOnNETStandard>True</DependsOnNETStandard>到 .csproj
  • 添加<DependsOnNETStandard>netstandard2.0</DependsOnNETStandard>到 .csproj
  • 添加<_HasReferenceToSystemRuntime>true</_HasReferenceToSystemRuntime>到 .csproj
  • 将 NETStandard.Library NuGet 包添加到 WPF 项目

更新

对于受此问题困扰的其他任何人,我找到了一种解决方法:

  1. 在您的 NET Standard 项目用于 IValidatableObject 的硬盘驱动器上找到 System.ComponentModel.Annotations.dll。将其复制到项目中的某个位置。
  2. 从您的解决方案中卸载 System.ComponentModel.Annotations NuGet 包
  3. 为您的 NET Standard 项目提供对您复制的 DLL 的直接引用
  4. 为您的 WPF 项目提供对标准程序集 System.ComponentModel.DataAnnotations 的引用
  5. 将您的 WPF 项目升级到 .NET 4.7.1
  6. 编译。您的 WPF 设计时应该没有此错误。

.

0 投票
1 回答
841 浏览

c# - 在 datagridview 中格式化 dateTime 绑定到绑定列表

我已经: - Datagridview - BindingSource - BindingList

我将 BindingList 与包含 dateTime 属性的类相关联。datagridview 将值显示为“dd/mm/yy hh:MM”。我想格式化为“hh:MM:ss”。

我知道有一种设置列的模式:

但我想知道是否有不同的方法可以做到这一点,特别是通过两种方式:1)设置我想到的 System.ComponentModel 属性

但它不起作用。

2)将Datagridview中的所有dateTime列设置为'DefaultCellStyle.Format =“t”但我不太喜欢这个解决方案,因为它绑定到一个类的datagridview,我希望它已经是所有格式通过 System.ComponentModel 类属性在类中计划。

你有什么建议吗?

PS这里的代码:

0 投票
0 回答
39 浏览

javascript - 在 React 组件中传递变量与 onChange HTML 元素有关

Search 组件是如何传递给第二个子组件的?我无法将文本字段的 onChange 从我的子组件传递到我的主 index.js,任何输入表示赞赏。来自两个不同文件的代码

0 投票
0 回答
79 浏览

c# - System.ComponentModel.DataAnnotations 在属性和封装字段上的有效放置

System.ComponentModel.DataAnnotations在我的模型中使用了各种语法。想知道使用这种简写语法是否对放置有任何影响,DataAnnotations以及下面进一步看到的放置DataAnnotations在 Attributes 而不是 Accessor & Modifier 方法上的位置。

我的模型具有我认为是最佳实践的放置方式,DataAnnotations当我将 OData 支持添加到未在此处发布的数据库上下文类时,它可以按预期工作

这个位置是否DataAnnotations也被认为是有效的

0 投票
1 回答
165 浏览

c# - GetMember() 可以为枚举返回一个空数组吗?

看看这个enum获取Description属性的扩展方法:

还有一个enum带有Description属性的例子:

最后是扩展方法的使用:

我的问题是,当涉及到enums 时,是否有if (memberInfo.Length < 1)必要进行检查?从曾经返回的数组GetMember()是否会为空enum?我知道你可以像这样声明一个空enum

但我不知道你是否甚至可以创建一个类型的变量Colors......

我想删除if (memberInfo.Length < 1)检查,但如果以后会引起问题,我不想这样做(我想不出我需要空的原因enum,但其他开发人员可能会使用GetDescription()扩展方法) .

0 投票
1 回答
56 浏览

visual-studio - VisualStudio 在设计时为我的组件自定义粘贴操作

我创建了 WinForm 组件,我想在开发人员复制时替换组件的一些属性,然后在设计时从剪贴板粘贴(不是复制时而是粘贴时)组件。

VisualStudio 创建组件的新副本并分配属性,使其成为源组件的副本。

我需要根据所选组件替换粘贴操作的一些属性。

它与使用控制组件的标准复制/粘贴操作非常相似。如果开发人员在粘贴控件之前选择其他容器(如面板),则设计人员更改组件的父级时。

我认为执行它的代码应该在我的 ComponentDesigner 类中的某个地方。我探索了 ComponentDesigner 方法,但找不到任何控制剪贴板操作的方法。