2013-10-24 8 views
2

나는 ..다른 클래스에 대해 같은 이름의 확장 메서드를 사용할 수 없습니까?

하나는

public static BsonValue TopOne(this IEnumerable<BsonValue> IEnumBv) 
    { 

    } 

두 번째는

public static BsonValue TopOne(this BsonValue IEnumBv) 
{ 

} 

가능이가 없습니다이 같은 두 개의 확장 방법입니다 있나요? 나는 이유가 없다.

짝수 이름은 동일하지만 다른 확장 기능에 맞습니까?

또는 어떻게 이것을 달성 할 수 있습니까? 확장 프로그램 둘 다에 대한 토폴로지 이름이 필요해. 가능하니? 'BsonExtensionLibrary.MongoExtensions.TopOne (MongoDB.Bson.BsonValue)'와 'BsonExtensionLibrary :

UPDATE하는

내가이 오류를

호출을 얻고 것은 다음과 같은 방법 또는 속성 사이의 모호 .MongoExtensions.TopOne (System.Collections.Generic.IEnumerable)

+1

당신이 문제가 무엇에 직면하고있다? 코드를 컴파일하려고 했습니까? –

+0

그래, 그 컴파일하지 .. 그것은 이름 사이에 양쪽 모두 모호합니다. – shanmugharaj

+0

죄송합니다 맞춤법 오류 yaar .. IEnumerable 괜찮 .. – shanmugharaj

답변

8

당신은 절대적으로 이것을 할 수 있습니다.하지만 exten을 호출하려고하면 문제가 발생할 것입니다. 시온 방법은 BsonValueIEnumerable<BsonValue> 인 것입니다. 예 :

호출 할 것으로 예상되는 방법은 무엇입니까? 둘 다 적용 가능하며 어느 변환도 다른 것보다 우수하지 않습니다.

이것은 확장 메서드와는 아무런 관련이 없습니다. 단지 오버로드 문제 일뿐입니다. 사람들은 보통의 정적 메소드 인 경우에 당신은 정확히 같은 문제에 직면 것, 당신은 있었다 :

BsonArray array = ...; 
BsonValue top = BsonHelpers.TopValue(array); 

중 하나는 두 가지 방법으로 서로 다른 이름을 지정하거나, 예를 들어, 원하는 것을 표현하는 몇 가지 방법을 찾아

BsonArray array = ...; 
BsonValue topAsEnumerable = array.AsEnumerable().TopValue(); 
BsonValue topAsValue = ((BsonValue) array).TopValue(); 

(그건 그냥IEnumerable<BsonValue>로 표현 형식을 변환하는 Enumerable.AsEnumerable 확장 방법을 사용합니다.)

+0

오 그 사람이있어. 그래. 감사. – shanmugharaj

관련 문제