2016-09-05 2 views
1

Я хочу использовать выражение условие для выбора лямбда-выражения, как это:Используя выражение условие для выбора лямбда-выражения

xxxx.UsingFactory(
hasProofing? (()=>new ProofingA()) : (() => new ProofingB()) 
); 

Но, это показать мне ошибки. Итак, если я хочу сделать это, как мне это сделать.

Подробно об:

нет неявное преобразование между «лямбда-выражения» и «лямбда-выражения»

+1

* показать мне ошибку * .. Это очень полезно, если вы утверждаете, эти ошибки. Также покажите подпись 'UsingFactory', что она принимает в качестве параметров? Наследуют ли 'ProofingA' и' ProofingB' от одного и того же объекта? – user3185569

+0

реализовать из того же интерфейса – v11

+0

Также, что 'xxx.UsingFactory()' принимает как параметр? может быть, он не принимает действие без параметров? попробуйте 'x => new ProfingA()' – Alex

ответ

1

Вы должны явно бросить хотя бы один из лямбды. Например, если это просто Action, то вы можете использовать следующий:

xxxx.UsingFactory(
    hasProofing ? (Action)(() => new ProofingA()) :() => new ProofingB() 
); 
Смежные вопросы