Mówią, że kod źródłowy jest najlepszą dokumentacją. W tym przypadku wydaje się, że jest to jedyna dokumentacja. Oto moje odkrycia od spelunkowania przez źródło .NET.
Lista projekcji metadanych jest zakodowana w .NET source using a macro iterator.
Ten nagłówek znajduje się w różnych miejscach, w których jest przekształcany w struktury danych dla danego zadania. Najbardziej dostępne miejsce dla nas, które znalazłem, to WinMD metadata importer i jego adapter. Od źródła:
// This metadata importer is exposed publically via CoCreateInstance(CLSID_CorMetaDataDispenser...).
// when the target is a .winmd file. It applies a small number of on-the-fly
// conversions to make the .winmd file look like a regular .NET assembly.
My się to, że można używać CoCreateInstance(CLSID_CorMetaDataDispenser...)
stworzyć IMetaDataDispenser
, zadzwoń OpenScope() z IID_IMetaDataImport
z plikiem .winmd
dostać importera metadanych. Następnie wykona konwersje, takie jak IMap
do IDictionary
, gdy przejrzysz metadane. Spekuluję, ale jestem prawie pewien, że to właśnie robi Visual Studio podczas generowania definicji typów z metadanych lub implementacji interfejsu.
Możesz również dołączyć nagłówek z iteratorem makr do swojego własnego projektu C/C++ i przekształcić dane w dowolną formę najbardziej przydatną dla ciebie, np. wygenerować z niego kod.
Nie można znaleźć żadnej dokumentacji na ten temat. Widziałeś tylko kilka filmów na kanale 9, ale to chyba nie jest dla ciebie wystarczająco głębokie nurkowanie? Czy możesz przesłać ci linki, jeśli chcesz? – ChristiaanV
@ ChristhawanV - linki byłyby bardzo pomocne, dzięki. Jednakże kompletna i formalna dokumentacja w tym zakresie moja firma Microsoft byłaby niezwykle pomocna i jest konieczną IMHO. – logicnp