Dostęp do pól Struct w obiekcie z odbiciem

Próbuję użyć refleksji (ostatecznie w nieznanym czasie kompilacji)object który zawierastruct. Mam tak daleko jakTypedReference.MakeTypedReference ale uderzyłem w ścianę.

Oto moja klasa i Struct

public class MyObject
{
    public int Id;
    public Money Amount; 
}

public struct Money
{
    public int Vaule;
    public string Code;
}

A oto jak próbuję ustawić „Kod” w „Kwocie” w MyObject za pomocą odbicia. Jak wspomniałem powyżej, szukam rozwiązania, które nie wie o tych typach w czasie kompilacji (byłoby to zbyt proste!)

Oto kod, który mam do tej pory (użyłem [0], [1] do uproszczenia kodu)

var obj = new MyObject() { Id = 1 };
obj.Amount.Vaule = 10;
obj.Amount.Code = "ABC";

FieldInfo[] objFields = obj.GetType().GetFields();
FieldInfo[] moneyFields = objFields[1].GetValue(obj).GetType().GetFields();

List<FieldInfo> fields = new List<FieldInfo>() { objFields[1] };
fields.AddRange( moneyFields );

TypedReference typeRef = TypedReference.MakeTypedReference( 
                           objFields[1].GetValue( obj ), fields.ToArray() );

moneyFields[1].SetValueDirect( typeRef, "XXX" );

TypedReference.MakeTypedReference wysadza w powietrze; „FieldInfo nie pasuje do typu celu”. Podobnie, jeśli tylko przejdęobjFields[1]. A jeśli tylko przejdzieszmoneyFields Dostaję „TypedReferences nie można na nowo zdefiniować jako prymitywów”.

Czemu? Załóżmy, że tworzę losowe urządzenia testowe i chcę wypełnić pola klas losowymi danymi :)

questionAnswers(1)

yourAnswerToTheQuestion