Почему я (иногда) должен ссылаться на сборки, на которые ссылается сборка, на которую я ссылаюсь?

У меня есть сборка A, которая определяет интерфейс с некоторыми перегрузками:

<code>public interface ITransform
{
    Point InverseTransform(Point point);
    Rect InverseTransform(Rect value);
    System.Drawing.Point InverseTransform(System.Drawing.Point point);
}
</code>

... и сборка B, которая ссылается на A (двоичный файл, а не проект) и вызывает одну из перегрузок:

<code>var transform =
    (other.Source.TransformToDisplay != null &&
    other.Source.TransformToDisplay.Valid) ?
    other.Source.TransformToDisplay : null;
if (transform != null)
{
    e.Location = transform.InverseTransform(e.Location);
}
</code>

Чтобы быть точным, он называетSystem.Windows.Point перегрузкаInverseTransform метод, потому что это тип свойстваLocation вe.

Но когда я строю B в IDE, я получаю:

error CS0012: The type 'System.Drawing.Point' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.

хотя это даже не перегрузка, которую я называю. Когда я закомментирую строку, где перегружен методInverseTransform вызывается, он прекрасно собирается, хотя я все еще создаю экземпляр объекта типаITransform.

Зачем? И есть ли способ исправить это, не добавляя ссылку наSystem.Drawing везде?

Ответы на вопрос(5)

Ваш ответ на вопрос