sha*_*raj 2 .net c# extension-methods
我有两个像这样的扩展方法..
一个是
public static BsonValue TopOne(this IEnumerable<BsonValue> IEnumBv)
{
}
Run Code Online (Sandbox Code Playgroud)
第二个是
public static BsonValue TopOne(this BsonValue IEnumBv)
{
}
Run Code Online (Sandbox Code Playgroud)
这不可能吗?我没有理由.
即使名称相同,但它对于不同的扩展方法是正确的吗?
或者如何实现这一目标?我需要两个扩展名的topone名称.这可能吗?
UPDATE
我收到了这个错误
以下方法或属性之间的调用不明确:'BsonExtensionLibrary.MongoExtensions.TopOne(MongoDB.Bson.BsonValue)'和'BsonExtensionLibrary.MongoExtensions.TopOne(System.Collections.Generic.IEnumerable)
您完全可以做到这一点-但如果你试图调用的东西扩展方法,既是你有问题,BsonValue 和一个IEnumerable<BsonValue>.例如:
BsonArray array = ...;
BsonValue top = array.TopValue();
Run Code Online (Sandbox Code Playgroud)
您希望调用哪种方法?两者都适用,转换都不比另一个好.
请注意,这与扩展方法无关 - 它只是重载决策.如果这些是普通的静态方法,你将遇到完全相同的问题,并且你有:
BsonArray array = ...;
BsonValue top = BsonHelpers.TopValue(array);
Run Code Online (Sandbox Code Playgroud)
要么给这两种方法赋予不同的名称,要么找到一些表达你想要的方法,例如
BsonArray array = ...;
BsonValue topAsEnumerable = array.AsEnumerable().TopValue();
BsonValue topAsValue = ((BsonValue) array).TopValue();
Run Code Online (Sandbox Code Playgroud)
(这只是使用Enumerable.AsEnumerable扩展方法将表达式类型转换为.)IEnumerable<BsonValue>
| 归档时间: |
|
| 查看次数: |
578 次 |
| 最近记录: |