Dlaczego muszę (czasami) odwoływać się do zespołów, do których odwołuje się odwołanie do złożenia?

Mam zespół A, który definiuje interfejs z pewnymi przeciążeniami:

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

... i zespół B, który odwołuje się do A (binarny, nie do projektu) i wywołuje jedno z przeciążeń:

<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>

Aby być precyzyjnym, nazywa sięSystem.Windows.Point przeciążenieInverseTransform metoda, ponieważ jest to typ nieruchomościLocation we.

Ale kiedy buduję B w IDE, otrzymuję:

błąd CS0012: Typ „System.Drawing.Point” jest zdefiniowany w zespole, do którego nie ma odniesienia. Musisz dodać odwołanie do zespołu 'System.Drawing, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'.

nawet jeśli to nie jest przeciążenie, które dzwonię. Kiedy komentuję linię, w której jest przeciążona metodaInverseTransform jest wywoływany, buduje dobrze, mimo że nadal tworzę instancję obiektu typuITransform.

Czemu? Czy istnieje sposób, aby to naprawić bez dodawania odniesienia doSystem.Drawing wszędzie?

questionAnswers(5)

yourAnswerToTheQuestion