我有一個List<FieldsInfo>
在兩個不同的名稱空間中說A
& B
它們都在同一個VS解決方案中的不同項目中。我已在名稱空間B
中爲List<FieldsInfo>
填充了一些值。我想在名稱空間B
中將此列表傳遞給List<FieldsInfo>
以將值賦給ListBox
控件。請告訴我怎樣才能做到這一點。使用通用列表+ C#在不同名稱空間之間傳遞數據使用通用列表+ C#
0
A
回答
3
有沒有有關A.FieldsInfo
和B.FieldsInfo
。理想的做法是讓它們只有一種類型。如果這是不可能的,那麼一個懶惰的妥協就是在某處(與普通成員)聲明IFieldsInfo
,並從兩種類型實現IFieldsInfo
。這樣做的一個好處是,隱式接口的實現會踢,和partial
類使其能夠爲你的控制之外生成的類型做到這一點甚至:
namespace A {
partial class FieldsInfo : IFieldsInfo {}
}
namespace B {
partial class FieldsInfo : IFieldsInfo {}
}
現在只是在條款講,如果IFieldsInfo
,而不是要麼A.FieldsInfo
或B.FieldsInfo
。
3
就編譯器和CLR而言,不同命名空間中的兩種類型完全是不同類型。事實上,他們有相同的簡單名稱是無關緊要的 - 從長遠來看,您的代碼可能會造成混淆。您需要提供這兩種類型之間的轉換 - 或者最好是,如果它們表示相同的信息,則僅使用單一類型開始。
一旦你有有一個轉換(如果你還需要一個),你可以使用ConvertAll
方法:
List<Foo> = bars.ConvertAll(bar => Foo.FromBar(bar));
或LINQ:
List<Foo> = bars.Select(bar => Foo.FromBar(bar))
.ToList();
ConvertAll
會稍微更有效,但是如果你想處理List<T>
以外的類型,LINQ更加靈活。
相關問題
- 1. 在C#表單之間傳遞列表
- 2. 將值傳遞到通用列表C#
- 3. 在c#中使用名稱空間#
- 4. 在C++中使用名稱空間?
- 5. 在C++中使用名稱空間
- 6. 通用列表c#
- 7. asp.net - 傳遞通用列表
- 8. 使用名稱空間語句的C++
- 9. 使用名稱空間頭文件C++
- 10. 使用名稱空間僅用於初始化列表
- 11. 通過引用傳遞的C++與命名空間中的類
- 12. 在表單之間使用列表
- 13. 繼承其名稱空間的嵌套表不能在不同名稱空間中使用多個父表
- 14. 通用列表數據插入C#
- 15. C++中的通用數據列表
- 16. 使用C問題在線程之間傳遞數據
- 17. 使用管道在子進程之間傳遞數據C
- 18. C通用鏈接列表
- 19. 通用C++鏈接列表
- 20. C#動態通用列表
- 21. c#通用列表合併
- 22. C#:通用列表屬性
- 23. C#通用列表foreach OutofMemoryException
- 24. SQLite和列表通用C#
- 25. 在C++(MFC)應用程序和C#之間傳遞數據
- 26. 使用JS或PHP在HTML表單之間傳遞數據?
- 27. Django 1.8使用表格在頁面之間傳遞數據
- 28. 使用和名稱空間
- 29. C++:使用命名空間,全局變量是行不通的
- 30. C#在單詞之間使用BAR格式列表項
我可以澄清一下:你的意思是你有'FieldsInfo'在兩個命名空間中單獨定義,即'A.FieldsInfo'和'B.FieldsInfo'?另外,在你的例子中,你只能使用'B' - 不清楚'A'在你的例子中的位置。 –
是正確的Marc – RSP
所以......在你的例子中,「A」在哪裏? –