public interface A
{
public T Property { get; }
}
public class BaseClass : A, A
{
string A.Property => "BaseClass";
int A.Property => 0;
}
public class DerivedClass : BaseClass, A, A
{
string A.Property => "DerivedClass";
int A.Property => 1;
}
[Fact]
public async Task Test1()
{
var obj = new DerivedClass();
var values = obj.GetType().GetInterfaces().Where(i => i.GetGenericTypeDefinition() == typeof(A)).Select(i => i.GetProperty(nameof(A.Property))!.GetValue(obj)!);
Assert.Equal(4, values.Count());
}
При использовании этого фиктивного кода значения содержат только ["DerivedClass",1]. Можно ли получить все 4 значения (включая значения базового класса) или реализации базового интерфейса полностью переопределены?
[code]public interface A { public T Property { get; } }
public class BaseClass : A, A { string A.Property => "BaseClass"; int A.Property => 0; } public class DerivedClass : BaseClass, A, A { string A.Property => "DerivedClass"; int A.Property => 1; }
[Fact] public async Task Test1() { var obj = new DerivedClass();
var values = obj.GetType().GetInterfaces().Where(i => i.GetGenericTypeDefinition() == typeof(A)).Select(i => i.GetProperty(nameof(A.Property))!.GetValue(obj)!);
Assert.Equal(4, values.Count()); } [/code] При использовании этого фиктивного кода значения содержат только ["DerivedClass",1]. Можно ли получить все 4 значения (включая значения базового класса) или реализации базового интерфейса полностью переопределены?