在运行时C#上选择扩展类

时间:2016-11-02 21:14:09

标签: c# .net extension-methods

每个人的晚安,

我在C#中有2个抽象类:

public abstract class A
{

}

public abstract class B
{

}

我希望在我的第三个类中通过配置文件决定运行时间,以扩展A类或B类。

例如:

public Class C : B or A

两个抽象类都提供了一个具有相同签名的抽象方法。

2 个答案:

答案 0 :(得分:2)

不,您无法在运行时更改/选择基类,因为在编译时定义了基类。

这听起来像是在两个类中实现通用接口,并且只使用其他地方的接口在您的情况下将是一个很好的解决方案。

interface IListener 
{
     void Listen();
     ...
}

class CA : A, IListener{ .... }
class CB : B, IListener { .... }

// to use:
IListner listener =  useSSL ? new CA(...) : new CB(...);     

答案 1 :(得分:1)

如果我从你的问题和评论中正确理解(检查@RB所说的),那么适当的行为就是定义:

public interface IC
{
}

public class A : IC
{
}

public class B : IC
{
}

编写代码以使用Interface,并设法将正确的具体类注入消费者。