.net 将接收到的对象转换为 List 或 IEnumerable

我正在试着表演下面的演员阵容

private void MyMethod(object myObject)  
{  
    if(myObject is IEnumerable)  
    {
        List<object> collection = (List<object>)myObject;  
        ... do something   
    }  
    else  
    {  
        ... do something  
    }  
}

但我总是以下列例外情况告终:

无法强制转换‘System.Collections.Generic.List1[MySpecificType]' to type 'System.Collections.Generic.List1[System.Object]’类型的对象

我真的需要这样做,因为这个方法需要非常通用,才能接收单一对象和未指定类型的集合.

这是可能的,还是有另一种方法来实现这一点.

谢谢.

推荐答案

C#4将有协变和逆变的模板参数,但在此之前,您必须做一些非通用的事情,如

IList collection = (IList)myObject;

.net相关问答推荐

Powershell机器令牌组

如何运行大量阻塞/同步 I/O 操作

使用 PEM 文件创建 DSA 签名

.NET 4.5 项目未在 Visual Studio 2022 中编译

当 Func 委托需要接口作为参数时,它是如何工作的?

在 .NET 反射中使用 GetProperties() 和 BindingFlags.DeclaredOnly

是否可以像 WebView 一样在 Windows 窗体中嵌入 Gecko 或 Webkit?

如何将浮点数向上舍入到 C# 中最近的 int?

抛出 ArgumentNullException

如何在 C# 中直接执行 SQL 查询?

C# 测试字符串是否为整数?

如何将 XPath 与 XElement 或 LINQ 一起使用?

如何在 RabbitMQ 中设置重试次数?

如何使用 Entity Framework Code First CTP 5 存储图像?

用 double 替换 int 时的 Visual Studio 长编译

如何在安装后立即启动 .NET Windows 服务?

如何访问 Session 变量并在 javascript 中设置它们?

合并两个(或更多)PDF

忽略 LINQ to XML 中的命名空间

ValueTypes 如何从 Object (ReferenceType) 派生并且仍然是 ValueTypes?