2013-10-24 1 views
2

я два метода расширения, как это ..Можем ли мы иметь методы расширения с одинаковым именем для разных классов?

Один

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

    } 

Второй Один

public static BsonValue TopOne(this BsonValue IEnumBv) 
{ 

} 

Разве это не возможно? У меня нет причины.

Даже имя такое же, но для разных методов расширения?

Или как это достичь? Мне нужно имя для обоих расширений. Возможно ли это?

UPDATE

Я получаю эту ошибку

Вызов неоднозначен между следующими методами или свойствами: 'BsonExtensionLibrary.MongoExtensions.TopOne (MongoDB.Bson.BsonValue)' и «BsonExtensionLibrary .MongoExtensions.TopOne (System.Collections.Generic.IEnumerable)

+1

Что проблемой вы столкнулись? Вы пытались скомпилировать свой код? –

+0

Да, это не компиляция. Это говорит о том, что имя между ними однозначно. – shanmugharaj

+0

извините его орфографическая ошибка yaar .. IEnumerable fine .. – shanmugharaj

ответ

8

Вы можете это сделать абсолютно - но у вас возникнут проблемы, если вы попытаетесь назвать экстен sion на чем-то, что является как BsonValue, так и a IEnumerable<BsonValue>. Например:

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

Какой метод вы ожидаете назвать? Оба они применимы, и ни одно преобразование не лучше, чем другое.

Обратите внимание, что это не имеет ничего общего с методами расширения - это просто разрешение перегрузки. Вы бы столкнуться с точно такой же проблемой, если это были нормальные статические методы, и вы должны были:

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

Либо дать два метода разные имена, или найти какой-то способ выразить то, что вы хотите, например,

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

(Это использует метод Enumerable.AsEnumerableрасширения просто преобразовать тип выражения в IEnumerable<BsonValue>.)

+0

О, это его человек. Да. Благодарю. – shanmugharaj

Смежные вопросы