- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
给定以下代码:
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Xunit;
namespace Company.Tests
{
public class MyObject
{
[Display(Order = 1000)]
public virtual string StringPropertyB { get; set; }
[Display(Order = 2000)]
public virtual string StringPropertyA { get; set; }
}
public class MyObjectTest
{
[Fact]
public void X()
{
var properties = typeof(MyObject).GetProperties();
var stringPropertyBPropertyInfo = properties[0];
var stringPropertyAPropertyInfo = properties[1];
// Debugger Display = "{[System.ComponentModel.DataAnnotations.DisplayAttribute(Order = 1000)]}"
var bDisplayAttribute = stringPropertyBPropertyInfo.GetCustomAttributesData().FirstOrDefault();
// Debugger Display = "{[System.ComponentModel.DataAnnotations.DisplayAttribute(Order = 2000)]}"
var aDisplayAttribute = stringPropertyAPropertyInfo.GetCustomAttributesData().FirstOrDefault();
}
}
}
如何以编程方式更新 Order 属性?
我想在它设置为新值后更新它。 (用例不必指定订单,而是自动为订单分配一个值,以匹配 MyObject 上的属性从上到下出现的顺序。)
最佳答案
正如 Skeet 先生在 Thumper 指出的答案中所写,据我所知,这是无法完成的。您可以更新订单值,但它不会持续存在:
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Reflection;
using Shouldly;
using Xunit;
namespace Tests
{
public class ObjectWithDisplayOrder
{
[Display(Order = 0)]
public virtual string StringPropertyB { get; set; }
[Display(Order = 0)]
public virtual string StringPropertyA { get; set; }
}
public class DisplayOrderTests
{
[Fact]
public void ShouldUpdateDisplayOrderProperty()
{
const int updatedOrderValue = 1000;
var properties = typeof(ObjectWithDisplayOrder).GetProperties();
foreach (var property in properties)
{
var displayAttribute = (DisplayAttribute) property.GetCustomAttributes().First(a => a is DisplayAttribute);
var props = displayAttribute.GetType().GetProperties(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public).ToList();
props.Single(p => p.Name == "Order").SetValue(displayAttribute, updatedOrderValue);
// displayAttribute Order is 1000 here, but it's not persisted...
}
foreach (var property in properties)
{
var displayAttribute = (DisplayAttribute) property.GetCustomAttributes().First(a => a is DisplayAttribute);
displayAttribute.GetOrder().ShouldBe(updatedOrderValue); // Fails - Order is still 0
}
}
}
}
关于c# - 如何以编程方式更新 DisplayAttribute 上的 Order 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39498103/
我有一个 poco 类产品 public class Product { public int Id {get;set;} [RequiredEx] public string
我在我的 WPF 应用程序中使用 MVVM 模式,并将具有本地化功能的 DisplayAttribute 应用于我的模型属性: class MyModel { [Display(
我有一个枚举类... public enum LeadStatus : byte { [Display(Name = "Created")] Created = 1, [Display
我有一个像这样的 Helper 方法来获取 PropertyName(试图避免使用魔法字符串) public static string GetPropertyName(Expression> exp
我已经在 Visual Studio 中启动了一个默认的 MVC4 项目, 我模型中的某处是这段代码 public class LoginModel { [Required] [D
因为我们可以使用 System.ComponentModel.DataAnnotations.DisplayAttribute 为属性设置标签,所以我想将它用于类,但不允许在类中使用。 using S
我有一个从 EF4 生成的部分类,我分配了一个 MetadataType 以便在 ASP.NET MVC3 上显示控件的名称,它按预期工作。 我想使用分配给每个属性的相同 DisplayAttribu
我希望显示名称包含一些 html 文本。 例如: [Display(Name = "First Name boldtext)] public string FirstName { get; set;
我有一个基类,它继承了另一个基类的属性,并添加了一个新的属性,如下所示: public class DataSourceWithIntervalBase : DataSourceBase {
我通过以下方式在我的 UI 中创建了一些项目 Buttons.cs [Browsable(true)] [Display(Order = 1, Name = "Object1", GroupName
请帮我在 DisplayAttribute 中添加我尝试过的属性,但将 consturtor 错误设置为 null var fieldName = string.Format(
在 C#6 中,使用 nameof() 关键字,现在可以创建使用本地化的类型安全 Display 属性。(另见 DisplayName attribute from Resources?) 结果会是这
在尝试编译我的 .Dll 时,我设法找出了所有引用资料和错误,除了这两个(我有多个)。 "The type or namespace name 'Display' could not be found
我正在绑定(bind) DataGrid.ItemsSource属性(property)给List目的。我正在通过 支持 Silverlight 的 WCF 服务 获取数据。所以 PersonDeta
我有一个模型类,具有如下属性: [Display(Name = "Phone", Description="Hello World!")] public string Phone1 { get; se
给定具有这些数据注释的模型: public class Example { [Required] [Display(Name = "Activity response")] p
我想知道是否可以将 ASP.NET MVC6 中的 IHtmlLocalizer 直接与 POCO 类一起使用?目前我有几个 View 模型使用 DisplayAttribute 来在 View 和验
给定以下代码: using System.ComponentModel.DataAnnotations; using System.Linq; using Xunit; namespace Compa
class SomeModel { [Display(Name = "Quantity Required")] public int Qty { get; set; } [Di
想知道这是否可能或具有这种效果的东西。 public class MyModel { public string Name { get; set; } [Display(Name =
我是一名优秀的程序员,十分优秀!