C# 从基类继承时引用的规则

C# 从基类继承时引用的规则,c#,C#,假设项目A是一个C#类库,而项目B是一个依赖于项目A的控制台应用程序 在项目A中,定义了以下类别: public class ActionMailNotifier : RazorMailerBase { private readonly string _viewPath; private readonly EmailHost _emailConfig; ... ... } public

假设项目A是一个C#类库,而项目B是一个依赖于项目A的控制台应用程序

在项目A中,定义了以下类别:

public class ActionMailNotifier : RazorMailerBase
{
        private readonly string _viewPath;
        private readonly EmailHost _emailConfig;
                   ...
                   ...
}
public class EmailFareMonitorAlertNotifier : ActionMailNotifier
{
                        ...
                        ...
}
“RazorMailBase”包含在项目A引用的外部dll ActionMailer.dll中

在项目B中,定义了以下类别:

public class ActionMailNotifier : RazorMailerBase
{
        private readonly string _viewPath;
        private readonly EmailHost _emailConfig;
                   ...
                   ...
}
public class EmailFareMonitorAlertNotifier : ActionMailNotifier
{
                        ...
                        ...
}

如果项目B中未引用ActionMailer.dll,编译器将生成一条错误消息,指示需要引用ActionMailer.dll。是否有一种方法可以将其结构为在项目B中不需要引用外部dll?

否。只要
EmailFareMonitorAlertNotifier
最终从程序集
external.dll
派生,您就需要引用它,以便编译器和运行时具有使用该类型所需的信息。

否。如果如果要删除对项目B中引用ActionMailer.dll的任何类型的所有引用,则不会看到任何错误。但是,由于ActionMailer.dll中定义了
RazorMailBase
,因此必须使用该引用才能使用
ActionMailNotifier
,或从外部库中的类派生的任何其他类型。

作为绝对最小值,项目B必须引用其自身类型的继承层次结构中存在的所有程序集
EmailFareMonitorAlertNotifier
,因此我猜答案是否定的。

不确定问题所在。您是否在询问是否有一种方法可以使用来自另一个程序集的代码而不引用它?