я немного запутался, пытаясь реализовать более элегантное решение с использованием общего lambda
/LINQ
Expression
или Func<bool>
просто заменить тип bool
возврата.передать логическое выражение в качестве параметра метода
сказать выражение:
public bool someBoolRetMethod(someType parA, someOtherType parB) {
if(parA==null)
return new ExpM("relevant msg").Rtrn;
}
так что теперь, если parA
является null
, ExpM()
это класс, который имеет дело с ошибками
то, что я хотел сделать, это передать состояние в качестве параметра:
public class ExpBoolCond:ExpM {
public bool Rtrn{get;set;}
public ExpBoolCond(theBool, themsg) {
variable to hold theBool;
if(theBool) new specialMbxWindow(themsg)
then set Rtrn..
}
}
Таким образом, я мог бы использовать:
var condNullParA = new ExpBoolCond(parA==null, "passed ParA is Null,\r\nAborting method <sub>(methodName and line# is handled inside ExpM base class)</sub> !")
if(condNullParA.Rtrn) ....
Каков правильный способ его реализации?
Update:
public class ExcBCondM:ExcpM
{
public bool Rtrn { get { return this._Rtrn(); } }
Func<bool> _Rtrn { get; set; }
public ExcBCondM(Func<bool> cond, string bsMsg)
: base(bsMsg,false)
{
this._Rtrn = cond;
//if (this._Rtrn) this.show();
}
public bool activateNon() { this.show(); return false; }
}
использование:
public bool someBoolRetMethod(some_passed_Type parA)
{
var someCondExpM = new ExpBoolCond(() => parA==null, "relevant Message");
if(someCondExpM.Rtrn)
return someCondExpM.activateNon(); //if() now Calls Func<bool> _Rtrn when called rather where stated.
return true;//if ok...
}
Непонятно, что именно вы пытаетесь сделать в первую очередь. Что случилось с простым кодом, который у вас уже есть? (Это также помогло бы, если бы вы использовали полный конкретный пример с идиоматическими именами ....) –
Ваш вопрос довольно хаотичен, пожалуйста, перечитайте его и перепишите. В настоящее время это не имеет большого смысла. –
@JonSkeet Я просто хочу передать «простое» условие 'parA == null' в качестве параметра и не знаю, как это сделать. почему для меня это не совсем понятно, если он эффективен, но я изучаю lambda/LINQ таким образом ... –