C# 检索类调用方在运行时使用的接口

C# 检索类调用方在运行时使用的接口,c#,reflection,interface,polymorphism,C#,Reflection,Interface,Polymorphism,我有一个类实现了两个不同的接口,它们都共享一个方法签名,比如“int GetChildData()”。它们都派生自包含另一个方法的同一个基本接口,比如“int GetBaseData()”。具体类将显式实现2个子方法,隐式实现基方法。将类实例化为子接口并调用基接口方法时,是否可以从被调用的类内部检索哪个子接口用于调用该方法?。 守则将澄清这一点。 多谢各位 我不能使用隐式实现,因为两个子接口实现方法需要有不同的逻辑 内部课程计划 { 公共接口IBaseInt { int GetBaseData

我有一个类实现了两个不同的接口,它们都共享一个方法签名,比如“int GetChildData()”。它们都派生自包含另一个方法的同一个基本接口,比如“int GetBaseData()”。具体类将显式实现2个子方法,隐式实现基方法。将类实例化为子接口并调用基接口方法时,是否可以从被调用的类内部检索哪个子接口用于调用该方法?。 守则将澄清这一点。 多谢各位

我不能使用隐式实现,因为两个子接口实现方法需要有不同的逻辑


内部课程计划
{
公共接口IBaseInt
{
int GetBaseData();
}
公共接口接口\u 1:IBaseInt
{
int getData();
}
公共接口接口2:IBaseInt
{
int getData();
}
公共类:接口1,接口2
{
public int GetBaseData()
{
//这个.getData();1;
int IIINTERFACE_2.getData()=>2;
}
私有静态void Main(字符串[]args)
{
IInterface_1 int1=新类();
IInterface_2 int2=新类();
WriteLine(“int1:+int1.GetBaseData());
WriteLine(“int2:+int2.GetBaseData());
Console.ReadLine();
}
}
根据使用的接口,结果应为“1”或“2”


编辑:我的请求与建议的重复请求不同:在那里,用户想知道接口背后的具体类型是什么,这里我需要知道在实例化类型时是否使用了接口,以及使用了哪种类型。

我编辑了问题的可能重复项,以便更好地突出我需要的内容与由于
实现了这两个接口,因此无法确定对象当前分配给哪个接口。如果您能够更改
IBaseInt
,则添加类型以确定要使用的方法是一个选项-
int GetBaseData(type t)
,并选中
If(t==typeof(界面(1))
。不确定您想用这段代码实现什么。如果您愿意分享问题的详细信息,可能会有一个更简单的解决方案。谢谢您的回答。正如您所想象的,这是一个试图绕过现有代码限制的噱头。有数千个对基本方法的引用,它们是分开的在两个接口之间。目前的实现通过依赖注入和子类在实现一个或另一个接口中解决了这个问题-但这就给我留下了三个类(一个基类和两个派生类)其中的两个派生类除了在实现中使用此特定方法外,还共享许多相同的代码。我希望通过将类从3个减少到1个来减少冗余,该类将显式实现两个接口,并将其注册到两个接口的ioc容器中,然后在运行时根据face类是由容器分配给的。虽然看起来不可能,但我们将坚持使用子类。另外,我当然不能更改基本接口方法,这将需要大量危险的操作。