gpt4 book ai didi

c# - 从属性值中获取属性

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:52 24 4
gpt4 key购买 nike

有这个简单的类:

public class Book
{
[DataMember]
[Column("Bok_Name")]
[Author("AuthorName")]
public string Name{ get; set; }

[DataMember]
[Column("Bok_Publisher")]
public string Publisher{ get; set; }
}

在知道属性类型为 Column 且值为 Bok_Name 的情况下,如何从属性中获取 PropertyInfo。我试图用 linq 查询来做到这一点。

最佳答案

使用反射和 .NET 扩展 CustomAttributeExtensions.GetCustomAttribute{T}方法,您可以找到具有自定义属性的属性。在这种情况下,自定义属性来自 System.ComponentModel.DataAnnotations.Schema.ColumnAttribute

var book = new Book { Name = "Jitterbug Perfume" };

PropertyInfo bokName = typeof(Book)
.GetProperties(BindingFlags.Public | BindingFlags.Instance) // add other bindings if needed
.FirstOrDefault(x => x.GetCustomAttribute<ColumnAttribute>() != null
&& x.GetCustomAttribute<ColumnAttribute>().Name.Equals("Bok_Name", StringComparison.OrdinalIgnoreCase));

// the above query only gets the first property with Column attribute equal to "Bok_Name"
// if there are more than one, then use a .Where clause instead of FirstOrDefault.
if (bokName != null)
{
string name = bokName.GetValue(book).ToString();
// do other stuff
}

关于c# - 从属性值中获取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26152178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com