Нужна помощь в написании анонимного метода?

Простите, если мой вопрос технически сформулирован неверно, но мне в основном нужен анонимный метод или делегат Func для инкапсуляции следующей функциональности:

                if (Cache.CurrentCustomer == null)
                {
                    return null;
                }
                else
                {
                    return Cache.CurrentCustomer.PersonID; // (Guid type)
                }

Вышеприведенный оператор if вернет значение, которое будет присвоено сущности Order, имеющей открытое поле свойства PersonID, которое принимает обнуляемый тип guid.

Если возможен делегат Func, его можно создать на лету, например:

orderToInsert.PersonID = new Func() => { ... }

Обычно я отправляю свой сценарий if в метод справочной поддержки, это хорошая возможность узнать что-то, что я пытался выбрать целую вечность! ТИА!!!

1 ответ

Решение

Вот оно в лямбда-форме:

Func<Guid?> lambda = () => Cache.CurrentCustomer == null 
                             ? (Guid?)null 
                             : Cache.CurrentCustomer.PersonID;

Затем вы будете использовать его как в

orderToInsert.PersonID = lambda();

Обновление: если вы только пытаетесь увидеть, что здесь возможно, то вы также можете сделать это:

orderToInsert.PersonID = (() => Cache.CurrentCustomer == null 
                             ? (Guid?)null 
                             : Cache.CurrentCustomer.PersonID)();

что на самом деле просто окольный способ сделать классику:

orderToInsert.PersonID = Cache.CurrentCustomer == null 
                             ? (Guid?)null 
                             : Cache.CurrentCustomer.PersonID;
Другие вопросы по тегам