В моем коде с помощью отражений я записал
if (f.FieldType.IsAssignableFrom("".GetType()))
У меня есть класс, который имеет неявное преобразование в строки. Однако, если оператор выше не ловит его. Как я могу сделать отражение/вышеупомянутое если строки выгоды оператора и классы с неявным преобразованием строк? вместо конкретно представляет в виде строки и каждый класс, о котором я знаю?
Вы получаете хорошие ответы здесь, но они предполагают, что ваша программа довольно близка к оптимальной для начала, и вы говорите
Предположим, что программа была написан правильно, скомпилирован с полным оптимизация, тестирование и внедрение производство.
По моему опыту, программа может быть написана правильно, но это не значит, что она почти оптимальна. Требуется дополнительная работа, чтобы добраться до этого момента.
Если я могу привести пример, этот ответ показывает, как совершенно разумная программа была сделана более чем в 40 раз быстрее с помощью макрооптимизации . Большие скорости не могут быть сделаны в каждой программе, как впервые написано, но во многих (кроме очень маленьких программ), это может, по моему опыту.
После этого микрооптимизация (горячих точек) может дать вам хорошую отдачу.
-121--685210-Я обнаружил, что сначала ограниченные контексты и совокупные корни казались самым простым понятием в DDD. Это до тех пор, пока вы не придете к реализации приложения с реальной проблемой. Здесь нет простого ответа. Это полностью зависит от требований бизнеса (масштабируемость, доступность, задержка, согласованность и т.д.). «Правильное» решение - это решение, которое уравновешивает эти проблемы, чтобы наилучшим образом соответствовать вашим потребностям.
На приведенном примере имеется несколько вариантов:
Одна вещь, чтобы иметь в виду, что запросы потребности часто очень Часто можно упростить конструкцию приложения, чтобы иметь отдельные ограниченные контексты исключительно для запроса. Если это звучит так, как будто это возможно, посмотрите на CQRS.
-121--2485369-Я бы использовал метод расширения, который получает все открытые статические методы и проверяет метод с правильным именем и возвращаемым типом.
public static class TypeExtentions
{
public static bool ImplicitlyConvertsTo(this Type type, Type destinationType)
{
if (type == destinationType)
return true;
return (from method in type.GetMethods(BindingFlags.Static |
BindingFlags.Public)
where method.Name == "op_Implicit" &&
method.ReturnType == destinationType
select method
).Count() > 0;
}
}
if(... || TypeDescriptor.GetConverter(f).CanConvertTo("".GetType()))