0

基本上我在 Visual Studio 2010 中有两个项目。项目 1 包含一个 getter/setter 对,如下所示:

public class MyFirstType
{
    public string Name { set; get; }
    public List<T> OtherList {set; get; }
    public override String toString() { ... }
}

public class MyClass
{
    public List<MyFirstType> MyType { get; set; };
    public override String toString() { ... }
}

在 project2 中,我尝试像这样使用这个 MyClass:

MyClass mclass = new MyClass();
List<MyFirstType> myTypeList = mclass.MyType;

但是,我收到以下错误:

Cannot implicitly convert type 'MyType[]' to 'System.Collections.Generic.List<MyFirstType>' 

我只是不明白这里发生了什么。如果我在 project1 中使用这个构造,我会得到一个列表。

我知道列表在内部表示为 T[]。但是为什么这里的返回类型的行为会发生变化?

4

2 回答 2

3

如果项目 1 是 WCF 服务或通过 WCF 服务使用的类,则默认情况下 List 被转换为数组。如果是这样,您应该去服务参考并检查适当的选项(转换为列表)。

于 2012-10-19T17:10:49.827 回答
1

最可能的原因是您有不止一个MyClass,而代码选择的不是您期望的。“F12”(去定义)通常会很快解决这些谜团。

于 2012-10-19T17:07:12.503 回答