Apa implikasi dari penggunaan tipe Generic di .NET untuk menyimpan ArcObjects, seperti ILayer, IField, dll?
Kompiler memberi saya peringatan saat menggunakan nilai-nilai semacam ini
public class Foo
{
private List<ILayer> fooLayers;
public List<ILayer> FooLayers
{
get { ... }
set { ... }
}
}
Ini peringatannya:
Peringatan 15 Jenis pustaka pengekspor peringatan pemrosesan 'ArcMemorialCore.Topography.IMemorialDocument.set_ProfessionalsEnvolved (value), ArcMemorialCore'. Peringatan: Eksportir tipe perpustakaan menemui instance tipe generik dalam tanda tangan. Kode generik tidak boleh diekspor ke COM. ArcMemorialCore
Kekhawatiran saya bukan hanya keberadaan peringatan, tetapi praktik desain yang baik, kinerja, dll.
arcobjects
.net
George Silva
sumber
sumber
Jawaban:
Peringatan yang Anda terima adalah karena kelas Anda (atau majelis) ditandai dengan:
Ini menyebabkan kompiler mengeluarkan peringatan ketika Anda menggunakan tipe yang tidak kompatibel dengan objek COM.
Yang sedang berkata, tidak ada masalah dengan menggunakan obat generik dengan tipe ArcObject. Anda harus, bagaimanapun, hanya menggunakannya untuk jenis yang internal untuk aplikasi Anda - yaitu: ketika Anda bekerja dengan satu set nilai.
sumber
List<object>
. Beralih dari CLR ke COM + seharusnya tidak menjadi masalah.Saya tidak memiliki masalah saat mengkompilasi.
Saya menggunakan C # 3.5
sumber