Ich habe eine Klasse, die mit VResult<T>
Extract Objekttyp zu verwenden, wie generische <T>
bool value = true;
VResult<bool> vr = new VResult<bool>(value);
instanziiert werden kann, wenn ich die Art des value
weiß nicht, würde Ich mag so etwas wie
VResult<typeof value> = new VResult<typeof value>(value);
Ist das möglich?
Das ultimative Ziel ist VResult<T>
zu serialisiert/deserialisiert:
string json = JsonConvert.SerializeObject(new VResult<bool>(true));
wo könnte ein Objekt oder eine Basisdatentyp wie int
oder bool
sein.
Ich bin mit einem Datentransferobjekt, das
ValueTypeName = Value.GetType().Name;
und
ValueTypeNamespace = Value.GetType().Namespace;
Eigenschaften, so dass auf der Empfangsseite hinzufügt kann ich
JObject obj = JObject.Parse(json);
string vt = (string)obj["ValueTypeName"];
string vtn = (string)obj["ValueTypeNamespace"];
Type type = Type.GetType($"{vtn}.{vt}");
var value = Activator.CreateInstance(type);
value = obj["Value"];
VResult<typeof value> vr = new VResult<typeof value> (value); //not correct
alle bekommen Type
Informationen über value
, aber ich finde gerade nicht heraus, wie man das generi bekommt c <T>
von value
, um es im VResult<T>
Konstruktor zu übergeben;
object value = 1; //I don't know the runtime type of this
var genericType = typeof(VResult<>).MakeGenericType(value.GetType());
var genericInstance = Activator.CreateInstance(genericType,
new object[] { value });
Und Sie haben jetzt eine Instanz von VResult<int>
mit einem value
von 1
:
Ja - genau das habe ich gesucht. Funktioniert super! –