我试图创建一个通用方法,使用datarowextension方法从数据行中读取列值:
public static Nullable<T> SafeRead<T>(DataRow row, string fieldName) where T : struct
{
if (row.HasColumn(fieldName))
{
return row.Field<Nullable<T>>(fieldName) ?? default(Nullable<T>);
}
else
return default(Nullable<T>);
}
public static T SafeRead<T>(DataRow row, string fieldName) where T : class
{
if (row.HasColumn(fieldName))
{
return row.Field<T>(fieldName) ?? default(T);
}
else
return default(T);
}
当我从我的代码中调用此函数时,编译器会抱怨两个调用之间存在模糊引用,这在我查看方法签名时很明显。但是,我不知道如何在不使用单独方法的情况下处理这个问题。
答案 0 :(得分:3)
返回值不是识别方法签名的一部分。所以你的方法对编译器来说是这样的:
SafeRead<T>(DataRow row, string fieldName)
和
SafeRead<T>(DataRow row, string fieldName)
- &GT;没有区别。
你应该重命名其中一种方法。
答案 1 :(得分:-2)
这是因为两个名称空间都包含相同的对象。要解决此问题,请使用类型别名
示例:如果System.Drawing.Image
和System.Web.UI.WebControls
导致错误,则以下using
语句将允许您为System.Drawing
创建别名类:
using GdiImage = System.Drawing.Image;
using System.Web.UI.WebControls;