이 질문은 COM Interop에 대한 참조 내용을 담고있는 last question의 후속 조치입니다. VB.NET에서.NET 및 COM을 통한 다중 레벨 인터페이스 상속 Interop
public interface ISkuItem
{
public string SKU { get; set; }
}
public interface ICartItem : ISkuItem
{
public int Quantity { get; set; }
public bool IsDiscountable { get; set; }
}
public class CartItem : ICartItem
{
//implemented properties...
}
또는 :
Public Interface ISkuItem
Property SKU() As String
End Interface
Public Interface ICartItem
Inherits ISkuItem
Property Quantity() As Integer
Property IsDiscountable() As Boolean
End Interface
Public Class CartItem
Implements ICartItem
'Implemented Properties'
End Class
인터페이스는 인텔리에 속성과 메소드를 노출 COM의 상호 운용성에 중요하다
의 내가 다음 2 인터페이스와 구현 클래스가 있다고 가정 해 봅시다 VB6 IDE (this article). 그러나 ICartItem
은 ISkuItem
에서 상속되므로 SKU
은 ICartItem
에 명시 적으로 정의되어 있지 않으므로 VB6의 IntelliSense에는 표시되지 않으며 objCartItem.SKU
에 쓸 때 컴파일러 오류가 발생합니다.
내가 ISkuItem
에 SKU
재산 Shadows
및 Overloads
를 사용하여 시도했다, 그러나 다른 컴파일러 나 명시 적으로 CartItem
클래스 내에서 모두ISkuItem
및 ICartItem
에 대한 SKU
을 구현하고자합니다. 나는 그것이 내가 원하는 것이라고 생각하지 않는다.
명시 적으로 CartItem
클래스에 두 번 SKU
를 선언하지 않고 ICartItem
에서 SKU
속성을 선언하는 (VB.NET 또는 C#을 하나의) 방법이 있나요?
몇 가지 정말 좋은 점이 있습니다. 결국이 상속이 COM에서 작업 할 때 많은 불필요한 골치 거리를 유발한다는 점에서 하루가 끝났습니다. 그것을 단순화하고 계속 나아갈 시간. –
Dan이 말했듯이'ICartItem'은'ISkuItem'에서 상속받을만한 가치가 없을 수도 있습니다. 그러나'CartItem'이'ICartItem'과'ISkuItem' 둘 모두를 내포하기를 원할지도 모릅니다. 물론 우리가 당신의 임 플레멘 테이션에 필요한 것을 말할 수는 없습니다. 누군가에게 미친 것처럼 보이는 것이 있다면 외부 앱과 함께 작동합니다. 그러면 당신이해야 할 일입니다. –