【发布时间】:2021-04-18 14:01:47
【问题描述】:
我正在使用Convert.ChangeType(object, Type) 方法将对象转换为其类型。它工作得很好。当我尝试将Object(List<string> 类型)转换回List<string> 时,它工作得很好。但是,当我尝试将 Object 转换为 IList<string> 时,它失败了。
问题:当我尝试将应为 IList 类型的对象转换为 IList 时,它失败并显示错误消息“对象必须实现 IConvertible”
IList<string> myList = new List<string>();
object myObject = myList;
Type myType = typeOf(IList<string>);
Convert.ChangeType(myObject, myType);
任何人都知道如何成功地将对象转换回其原始类型的 IList ... 或者是否有人知道如何将最初是 IList 的对象转换为 List?两者都行。
【问题讨论】:
-
您的声明 " 当我尝试将
Object(以前的类型为List<string>)转换回List<string>时,它工作得很好。" 表示你的误解。如果一个对象是一个List<string>,它仍然是一个List<string>,即使你将一个对它的引用存储在一个object类型的变量中。没有必要改变它的类型;类型保持不变。 -
它是一个 IList,而不是一个 List。没有误解。纠结这个太久了,不会是误会。主要是发布这个,所以其他人也不会为此感到挣扎。
-
它既是
List<string>也是IList<string>。我的观点与List或IList无关。如果我创建一个对象:object o = new List<int>();。该对象是List<int>、IList<int>、object、IEnumerable等。如果我将对该对象的引用存储在任何这些类型的变量 (IEnumerable ie = (IEnumerable)o;) 中,它不会t 改变对象的基本性质(/类型)。 -
好的,我明白你在说什么。该对象从未不是列表。可能是更好的表述方式。