Rufen Sie alle Implementierungen einer Schnittstelle für eine Klasse ab, einschließlich der BasisC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Rufen Sie alle Implementierungen einer Schnittstelle für eine Klasse ab, einschließlich der Basis

Post by Anonymous »

Code: Select all

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());
}
Mit diesen Dummy-Codewerten gilt nur ["DerivedClass",1]. Ist es möglich, alle 4 Werte (also auch die der Basisklasse) abzurufen, oder werden die Basisschnittstellenimplementierungen vollständig überschrieben?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post