2011-04-06 5 views
0

섀도 잉 :ASP.NET : 나는 두 개의 별도의 라이브러리 (하나 VB, 하나의 C#)에서 두 개의 클래스가 문제

Public Class Item 
    ... 
    Public Overridable ReadOnly Property TotalPrice() As String 
    Get 
     Return FormatCurrency(Price + SelectedOptionsTotal()) 
    End Get 
End Property 
End Class 

public class DerivedItem : Item { 
    ... 
    public new Decimal TotalPrice 
    { 
     get { return Price + OptionsPrice; } 
    } 
} 

당신이 볼 수 있듯이, DerivedItem.TotalPrice 어두운 영역 Item.TotalPrice 재산. 그러나 DerivedItem.TotalPrice 값을 검색 할 때 여전히 기본 객체의 TotalPrice 값을 얻고 있습니다.

DerivedItem의 속성이 반환되지 않는 이유는 무엇입니까?

편집

는 사실은 문제를 발견했습니다! AJAX를 통해 반환되는 JSON 문자열에 잘못된 값이 표시됩니다. TotalPrice이 올바르게 반환되는 것으로 밝혀졌으며 나중에 JSON 문자열의 그림자 속성 호출로 덮어 쓰게됩니다. 내 새로운 질문은 그림자가있는 속성의 직렬화를 방지하는 방법입니다.

(이 질문은 here을 rescoped 된)

답변

0

당신이 기본 유형에 대한 참조에서 TotalPrice을 referecing 있습니까?

Item item = new DerivedItem; 
string s = item.TotalPrice; 
+0

아니요 ... 항목이 AJAX 호출에서 asmx 웹 바인딩을 통해 바인딩됩니다. 내 시그널은'Public SomeMethod (As Items DerivedItem) As String'처럼 보입니다. – Jason

+0

SomeMethod는 아이템을 어떻게 사용합니까? 재미 있네. VB 라이브러리는 C# 라이브러리를 확장 한 다음 VB AJAX 호출을 사용합니다. :-) – klabranche

2

개체를 인스턴스화하는 방법에 따라 달라질 수 있습니다. 예를 들어

:

DerivedItem i = new DerivedItem(); 
i.TotalPrice(); 

은 그림자 버전을 호출합니다. 그러나

:

Item i = new DerivedItem(); 
i.TotalPrice(); 

실제로 기초를 호출합니다. 물론

Here's a nice explanation.

나는 그림자 피할 것 모든 가능한 경우

.... :-)

+0

나는 webmethod 매개 변수에서 객체를 인스턴스화합니다. mystere 남자 대답에 내 의견을 참조하십시오 – Jason

+0

SomeMethod 항목을 사용하는 방법은 무엇입니까? 재미 있네. VB 라이브러리는 C# 라이브러리를 확장 한 다음 VB AJAX 호출을 사용합니다. :-) – klabranche

+0

예 재미있는 프로젝트입니다.하지만 여전히이 문제가 있습니다. 객체를 직렬화하여 JSON 문자열로 돌려 보낼 때만 발생합니다. 정말 실망 스럽습니다. – Jason

0

기본 클래스 속성 작업에 <NonSerialized()> 속성을 설정합니까?

+0

그게 사실입니다 ... 나는 여전히 기본 클래스가 사용될 때 직렬화되기를 원합니다. – Jason

관련 문제