gpt4 book ai didi

c# - 有没有办法让一个类使用反射访问从它继承的类中的字段?

转载 作者:行者123 更新时间:2023-11-30 22:53:07 24 4
gpt4 key购买 nike

<分区>

我想要做的是拥有一个我可以从中继承并能够跟踪属性更改的类。

我有一个名为 TrackedEntity 的基类。

然后我创建另一个继承自 TrackedEntity 的类 TestEntity。

在我的 TestEntity 类上,我用我称为 CompareValues 的属性标记了我的字段之一。

跟踪实体

  public class TrackedEntity {
public void GetCompareValues<T> () {

var type = typeof (T);
var properties = type.GetProperties ();

foreach (var property in properties) {

var attribute = (CompareValues[]) property.GetCustomAttributes
(typeof(CompareValues), false);

var hasAttribute = Attribute.IsDefined (property, typeof
(CompareValues));

}
}
}

测试实体

public class TestEntity : TrackedEntity
{
public int one { get; set; }
[CompareValues]
public int two { get; set; }
public int three { get; set; }
}

CompareValues 属性:

 [AttributeUsage ( AttributeTargets.Property | 
AttributeTargets.Field,
Inherited = true)]
public class CompareValues : Attribute {
public CompareValues () { }
}

然后我可以这样做

var test  = new TestEntity ();
test.GetCompareValues<TestEntity> ();

在我的 GetCompareValues 方法中,我可以找到 TestEntity 中的哪些字段使用了我的 CompareValues 属性。

我正在尝试找到一种方法来访问具有 CompareValues 属性的字段的值,以便我可以跟踪更改并记录相关信息。

如果有任何其他方法可以通过使用其他方法来完成此操作,请告诉我。

谢谢。

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