2013-07-12 4 views
0

다른 클래스의 정적 메서드에 액세스하는 동안 C#에서 오류가 발생합니다. 'GimmePrimes'라는 이름이 현재 컨텍스트에 없습니다.

은 액세스를 시도하는 클래스입니다 :

class Problem7 
{ 
    public void Solve() 
    { 
     GimmePrimes(new long[]{2, 3, 5, 7, 11, 13}); 
    } 
} 

그리고 이것은 GimmePrimes가있는 정적 인 클래스입니다 :

public static class Extensions 
{ 
    //....Other static methods that work// 
    public static IEnumerable<long> GimmePrimes(this long[] firstPrimes) 
     { 
      return firstPrimes.Unfold(priorPrimes => priorPrimes.Last().OddNumbersGreaterThan().SkipWhile(candidate => priorPrimes.TakeWhile(prime => prime * prime <= candidate).Any(prime => candidate.IsDivisibleBy(prime))).First()); 
     } 
} 

두 클래스가 같은 네임 스페이스에 있습니다.

+0

public static class IntExtensionMethods public static class StringExtensionMethods public static class IEnumerableExtensionMethods 

등 당신은 그것은 내가 제대로 이상의 것을 복사하지 않았다 미안 정적 클래스입니다 longarrayname.GimmePrimes – Sayse

답변

9

Extensions은 정적 클래스 여야합니다. 이 확장 방법으로

public static class Extensions 

또한, 당신이 잘못을 전화하는거야 : 관련 측면 노트에

long[] array = new long[] {2, 3, 5, 7, 11, 13 }; 
IEnumerable<long> primes = array.GimmePrimes(); 

내가 확장 메서드 클래스가있을 때, 나는에 대해 별도의 하나를 만들 각 유형은 제가 확장되어서 거대한 모 놀리 식 수업으로 끝나지 않습니다.

+0

이 필요합니다. 진실을 반영하도록 편집했습니다. – Reapo

+0

확장 메서드를 호출 할 때 확장 개체에'this.' 접두사를 입력해야한다는 사실도 알게되었습니다. – orad