我有一个带有两个add方法的对象:
public void Add(string keyName, object value)
public void Add(string keyName, IEnumerable<object> values)
如果你调用它并提供一个对象,它会调用第一个对象.如果你提供IEnumerable,它会调用第二个.但是,如果你提供一个主要类型的IEnumerable,它会调用第一个.
有没有办法让c#选择第二种方法并将其包装而不是将数组视为对象?
如果不是,我想我会检查第一个add方法,看看它是否是一个基本类型,并强制它调用第二个方法.
你可以使用泛型.如果您将第二种方法更改为:
public void Add<T>(string keyName, IEnumerable<T> values)
{
}
Run Code Online (Sandbox Code Playgroud)
然后,如果它是任何种类IEnumerable<T>(例如IEnumerable<int>),那么它将使用通用方法.
值得注意的是,如果你需要它是一个你需要的东西,那就IEnumerable<T>不完全一样了IEnumerable<object>IEnumerable<object>IEnumerable<object> obList = values.Cast<object>();
| 归档时间: |
|
| 查看次数: |
51 次 |
| 最近记录: |