У меня есть сборка A, которая определяет интерфейс с некоторыми перегрузками:
public interface ITransform
{
Point InverseTransform(Point point);
Rect InverseTransform(Rect value);
System.Drawing.Point InverseTransform(System.Drawing.Point point);
}
...и сборка B, которая ссылается A (на двоичный файл, а не на проект)и вызывает его перегрузок:
var transform =
(other.Source.TransformToDisplay != null &&
other.Source.TransformToDisplay.Valid) ?
other.Source.TransformToDisplay : null;
if (transform != null)
{
e.Location = transform.InverseTransform(e.Location);
}
Чтобы быть точным, он вызывает перегрузку System.Windows.Point
метода InverseTransform
, потому что это тип свойства Location
в e
.
Но когда я создаю B в IDE, я получаю:
ошибку CS0012:Тип System.Drawing.Point определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку «System.Drawing, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a».
хотя это даже не та перегрузка, о которой я звоню. Когда я комментирую строку, в которой вызывается перегруженный метод InverseTransform
, он отлично строится, хотя я все еще создаю экземпляр объекта типа ITransform
.
Почему? И есть ли способ исправить это, не добавляя везде ссылку на System.Drawing
?