В приложении, которое у меня есть, я делаю довольно частые вызовы Convert.ChangeType
, чтобы преобразовать значение в динамически загруженный тип.
Однако после профилирования с ANTS я обнаружил, что этот Convert.ChangeType
, кажется, занимает значительную часть времени (из-за того, что его часто называют). У кого-нибудь есть более быстрая альтернатива этому?
В этот момент у меня есть объект типа, содержащий цель, и string
, содержащий значение.
Ниже приведен код нарушения. Я рассматривал возможность использования switch-statement для типа (поскольку это ограниченный набор типов) и вызов методов анализа, хотя я не уверен, будет ли это быстрее.
if(attributeRow["Value"]!=DBNull.Value)
sample[attr] = attr.AttributeType == typeof(Guid)
? new Guid(attributeRow["Value"].ToString())
: (IComparable)Convert.ChangeType(attributeRow["Value"],attr.AttributeType);