0

基本的に、Visual Studio 2010 には 2 つのプロジェクトがあります。プロジェクト 1 には、次のようなゲッター/セッターのペアが含まれています。

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 内でこの構成を使用すると、List が取得されます。

List が内部的に T[] として表されることは承知しています。しかし、ここで戻り値の型の動作が変更されたのはなぜでしょうか?

4

2 に答える 2

3

プロジェクト 1 が WCF サービスである場合、またはクラスが WCF サービスを介して使用する場合、既定ではリストが配列に変換されます。その場合は、サービス リファレンスに移動し、適切なオプションを確認する必要があります (リストに変換)。

于 2012-10-19T17:10:49.827 に答える
1

最も可能性の高い理由は、複数MyClassあり、コードが期待したものをピックアップしないことです。「F12」(定義に移動)は通常、そのような謎をすばやく解決します。

于 2012-10-19T17:07:12.503 に答える