日期:2014-05-17  浏览次数:20835 次

请教一个问题,关于如何区分T和List<T>
本帖最后由 niss 于 2013-04-08 20:56:12 编辑
有一个方法:
public T method<T>()
{
}

我怎么才能够限制这个T不可以是诸如List<T>,IList<T>,T[],IDictionary<T,T>这种集合类型?
比如不允许调用方这么用:method<List<T>>()

------解决方案--------------------
泛型约束达不到你的要求,他只能指明继承与谁,而不能限制不继承谁

所以你的在方法体里面自己判定

 T xxx<T>(T obj)
        {
            if (obj is IEnumerable)
            {
                throw new ArgumentException("参数无效");
            }
            return obj;
        }