Получить все реализации интерфейса для класса, в том числе для базового.C#

Место общения программистов C#
Ответить
Anonymous
 Получить все реализации интерфейса для класса, в том числе для базового.

Сообщение Anonymous »

Код: Выделить всё

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 значения (включая значения базового класса) или реализации базового интерфейса полностью переопределены?


Подробнее здесь: https://stackoverflow.com/questions/798 ... g-for-base
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»