Неявная версия IsAssignableFrom?

В моем коде с помощью отражений я записал

if (f.FieldType.IsAssignableFrom("".GetType()))

У меня есть класс, который имеет неявное преобразование в строки. Однако, если оператор выше не ловит его. Как я могу сделать отражение/вышеупомянутое если строки выгоды оператора и классы с неявным преобразованием строк? вместо конкретно представляет в виде строки и каждый класс, о котором я знаю?

6
задан 15 January 2010 в 23:39
поделиться

2 ответа

Вы получаете хорошие ответы здесь, но они предполагают, что ваша программа довольно близка к оптимальной для начала, и вы говорите

Предположим, что программа была написан правильно, скомпилирован с полным оптимизация, тестирование и внедрение производство.

По моему опыту, программа может быть написана правильно, но это не значит, что она почти оптимальна. Требуется дополнительная работа, чтобы добраться до этого момента.

Если я могу привести пример, этот ответ показывает, как совершенно разумная программа была сделана более чем в 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;
    }
}
7
ответ дан 17 December 2019 в 00:09
поделиться
if(... || TypeDescriptor.GetConverter(f).CanConvertTo("".GetType()))
0
ответ дан 17 December 2019 в 00:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: