我有一个带有两个添加方法的对象:public void Add(string keyName, object value)public void Add(string keyName, IEnumerable<object> values)
如果调用它并提供一个对象,它将调用第一个对象。如果提供IEnumerable,则调用第二个。但是,如果提供原始类型的IEnumerable,它将调用第一个。
有没有办法让c#选择第二种方法并将其装箱,而不是将数组视为对象?
如果不是,我想我将在第一个add方法中进行检查,以查看它是否为原始类型ienumerable并强制其调用第二个方法。
请您参考如下方法:
您可以为此使用泛型。如果将第二种方法更改为:
public void Add<T>(string keyName, IEnumerable<T> values)
{
}
然后,如果它是任何类型的
IEnumerable<T>(例如
IEnumerable<int>),它将使用通用方法。
值得注意的是,
IEnumerable<T>与
IEnumerable<object>并不完全相同,因此如果您需要将其作为
IEnumerable<object>,则需要类似
IEnumerable<object> obList = values.Cast<object>();
