In einer Anwendung, die ich habe, mache ich recht häufig Anrufe Convert.ChangeType
, um einen Wert zu einem dynamisch geladenen Typ zu konvertieren.Schnellere Version von Convert.ChangeType
Allerdings, nach dem Profiling mit ANTS, habe ich festgestellt, dass diese Convert.ChangeType
scheint einen erheblichen Teil der Zeit zu nehmen (aufgrund der oft aufgerufen wird). Hat jemand eine schnellere Alternative dazu?
An diesem Punkt habe ich einen Typ Objekt das Ziel, und ein string
enthält den Wert enthält.
Im Folgenden ist der säumige Code. Ich habe erwogen, eine switch-Anweisung für type (da es sich um eine begrenzte Sammlung von Typen handelt) und die Parse-Methoden aufzurufen, obwohl ich mir nicht sicher bin, ob das schneller sein wird oder nicht.
if(attributeRow["Value"]!=DBNull.Value)
sample[attr] = attr.AttributeType == typeof(Guid)
? new Guid(attributeRow["Value"].ToString())
: (IComparable)Convert.ChangeType(attributeRow["Value"],attr.AttributeType);
Wir werden uns ein paar Dinge ansehen, aber dieser Beitrag bestätigt meine Befürchtung, dass wir es so gut wie möglich tun würden, also akzeptiere ich diese Antwort. – Erich
Der ChangeType im Link funktioniert einwandfrei! Vielen Dank! – Larry