อาจเป็นไปไม่ได้ แต่ฉันมีชั้นนี้:
public class Metadata<DataType> where DataType : struct
{
private DataType mDataType;
}
มีมากกว่านั้น แต่ขอให้เรียบง่าย ประเภททั่วไป (DataType) ถูก จำกัด ประเภทค่าโดยคำสั่งที่ สิ่งที่ฉันต้องการจะทำคือมีรายการของวัตถุ Metadata ประเภทต่าง ๆ (DataType) เช่น:
List<Metadata> metadataObjects;
metadataObjects.Add(new Metadata<int>());
metadataObjects.Add(new Metadata<bool>());
metadataObjects.Add(new Metadata<double>());
เป็นไปได้ไหม
ทั้งคลาสฐานนามธรรมและอินเตอร์เฟสให้ระดับการควบคุมโดยการ จำกัด ประเภทขององค์ประกอบที่สามารถเพิ่มลงในรายการ ฉันยังไม่เห็นว่าการชกมวยเป็นอย่างไร
—
0b101010
แน่นอนถ้าคุณใช้. NET v4.0 หรือสูงกว่าความแปรปรวนร่วมเป็นวิธีแก้ปัญหา
—
0b101010
List<Metadata<object>>
ไม่หลอกลวง
@ 0b101010, ทั้งสองอย่าง จำกัด เฉพาะประเภทอ้างอิง, ชนิดของมูลค่าในตัวและโครงสร้างใด ๆ ยังสามารถเพิ่มได้ นอกจากนี้ในท้ายที่สุดคุณมีรายการ
—
Saeb Amini
MetaData
ประเภทอ้างอิงแทนประเภทค่าดั้งเดิมของคุณที่ไม่มีข้อมูล (เวลารวบรวม) เกี่ยวกับประเภทมูลค่าพื้นฐานของแต่ละองค์ประกอบนั่นคือ"มวย" อย่างมีประสิทธิภาพ
List<object>
? พวกเขาจะไม่หยุดชกมวย / unboxing พวกเขาจะไม่ลบความจำเป็นในการคัดเลือกนักแสดงและท้ายที่สุดคุณจะได้รับMetadata
วัตถุที่ไม่ได้บอกอะไรคุณเกี่ยวกับความจริงDataType
ฉันกำลังค้นหาวิธีแก้ปัญหาเหล่านั้น หากคุณกำลังจะประกาศอินเตอร์เฟส / คลาสเพียงเพื่อให้สามารถพิมพ์ชนิดทั่วไปที่นำไปปฏิบัติ / ที่ได้มาในรายการทั่วไปความแตกต่างของการใช้งานแบบList<object>
อื่นที่ไม่ใช่เลเยอร์ที่ไม่มีความหมายนั้นเป็นอย่างไร