6

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

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

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

“RazorMailBase”包含在项目 A 引用的外部 dll、ActionMailer.dll 中。

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

public class EmailFareMonitorAlertNotifier : ActionMailNotifier
{
                        ...
                        ...
}

如果项目 B 中未引用 ActionMailer.dll,编译器会生成一条错误消息,指示需要对 ActionMailer.dll 的引用。有没有办法构建这个结构,以便在项目 B 中不需要对外部 dll 的引用?

4

3 回答 3

1

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

于 2013-02-19T19:32:21.533 回答
0

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

于 2013-02-19T19:32:32.543 回答
0

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

于 2013-02-19T19:34:54.153 回答