我正在构建一个单位换算库,但在使用扩展方法时遇到了一个奇怪的问题:
我正在尝试向该接口(interface)添加扩展方法:
namespace ClassLibrary1
{
public interface DistanceType
{
double ConversionFactorToStandardUnit { get; }
}
}
在另一个类中,我有这个扩展方法:
namespace ClassLibrary1.DistanceTypes.Imperial.Inch
{
public static class DistanceTypeExtension
{
public static Inch Inch(this DistanceType passedDistance)
{
return new Inch();
}
}
}
但是当我尝试使用它时:
using ClassLibrary1.DistanceTypes.Imperial;
using ClassLibrary1.DistanceTypes.Imperial.Inch;
namespace ClassLibrary1
{
[TestClass]
public class ImperialTests
{
[TestMethod]
public void ExtensionTest()
{
Distance d = new Distance(5, DistanceType.Inch());
Assert.AreEqual(5, d.ToDoubleAsInches());
}
}
}
我收到一条错误消息,说 DistanceType 没有包含 Inch 的定义
最佳答案
扩展方法是通过 Type 的实例调用的,我看到你直接在 Type
上调用它:
DistanceType distanceType = new DistanceType();
Distance d = new Distance(5, distanceType.Inch());
并且您还需要创建一个实现 DistanceType
关于c# - 我的扩展方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29678031/