У меня есть сборка 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, я получаю:
error CS0012: Тип "System.Drawing.Point" определен в сборке, на которую не ссылаются. Вы должны добавить ссылку на сборку "System.Drawing, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a".
хотя это даже не перегрузка, которую я вызываю. Когда я прокомментирую строку, где вызывается перегруженный метод InverseTransform
, он строит отлично, даже если я все еще создаю объект типа ITransform
.
Почему? И есть ли способ исправить это без необходимости добавлять ссылку на System.Drawing
всюду?