2010-01-08 2 views
0

http://www.dscredstorm.com/getisbninfo.aspxC# 'using'내가이 일을 제대로하고 있습니까? (보호 수준으로 인해 접근 할 수 없음)

아마존의 API를 사용하려고합니다. 나는 C# windows form app 인 예제 코드를 다운로드했지만 C# 웹 사이트에서도 올바르게 작동 할 것이라고 생각했다.

SignedRequestHelper.cs는 서명 된 요청을 보내야하는 일부 기능이있는 것으로 보이는 파일입니다. 네임 스페이스는 AmazonProductAdvtApi입니다. 나는 파일을 App_Code/Csharp에 저장하고 AmazonProductAdvtApi를 사용하여 ';'를 추가했습니다. 내 페이지로.

그러나 나는이 오류를 얻을 : 인해 보호 수준

왜에 'AmazonProductAdvtApi.SignedRequestHelper'액세스 할 수 없습니다를?

추가 정보 : SignedRequestHelper 도우미 = 새로운 SignedRequestHelper (accessKeyId, secretKey, 대상);

참조 : 당신이 의도 한 범위를 벗어난 항목을 참조하려는 의미 "인해 보호 수준에 접근 할 수없는"

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Web; 
using System.Security.Cryptography; 

namespace AmazonProductAdvtApi 
{ 
    class SignedRequestHelper 
    ... 
    ... some private consts and vars... 

    public SignedRequestHelper(string awsAccessKeyId, string awsSecretKey, string destination) 
    { 
     this.endPoint = destination.ToLower(); 
     this.akid = awsAccessKeyId; 
     this.secret = Encoding.UTF8.GetBytes(awsSecretKey); 
     this.signer = new HMACSHA256(this.secret); 
    } 
+0

어떻게 사용하려고 시도했는지, 그리고 오류가 발생한 위치의 코드를 보여주십시오. –

+0

fyi와 마찬가지로 자세한 ASP.NET 오류 정보를 해제 할 수 있습니다. 오류가있는 경우 전 세계가 출처를보고 싶지 않을 수도 있습니다. 설정은 web.config의 입니다 – Kyle

+0

클래스의 선언은 어떻게 생깁니 까? 내부입니까? –

답변

1

클래스가 public으로 표시되지 않습니다. 따라서 다른 네임 스페이스에서는 액세스 할 수 없습니다.

대부분의 다른 아마존 클래스도 AmazonProductAdvtApi 네임 스페이스에 있으므로 문제가 없습니다 (명시 적 가시성이없는 클래스는 기본적으로 internal이됩니다).

해당 클래스를 사용하려면 선언을 public class SignedRequestHelper으로 변경하십시오. 클래스가 공용으로 사용되지 않을 수도 있습니다. 즉, 공용 API에서 일반적으로 기대하는 특정 유형의 오류 검사가 부족할 수 있습니다.

+0

아, 좋아. 나는 아마존이 우리에게 플러그 앤 플레이 할 수있는 것을 제공 할 것이라고 생각했다. – Chris

+0

나는 그들이 그랬을 것이라고 확신하지만 반드시 소스에서 * 모든 것을 가지고 놀 것을 원한다는 의미는 아닙니다. 분명히 그것은 'AmazonProductAdvtApi' 네임 스페이스의 다른 클래스에서 사용하기위한 것입니다. – Aaronaught

+0

아마도 그렇습니다. 제공된 샘플 코드를 살펴 보겠습니다. 내가 계속 연구하겠습니다. 아마도 – Chris

0

: 여기 http://www.dscredstorm.com/getisbninfo.aspx

는 SignedRequestHelper.cs의 클래스 선언입니다 다른 비 관련 클래스에서 개인 클래스의 인스턴스를 만드는 것입니다. using 문은 여기서 문제가되지 않습니다.

1

아마도 이것은 당신이 사용하기를 원하는 공개 인터페이스가 아닙니다. 어쩌면이 클래스를 래핑하는 공용 클래스가있을 수 있습니다.

+0

. 아마존 API 문서가 더 확실해지기를 바랍니다. – Chris

+0

? 친구 클래스라고 생각하는 이유는 무엇입니까? 친구 키워드가 C#에 존재하지 않습니다. –

+0

@ 브라이언 : 맞아. 고맙습니다. –

관련 문제