Это немного странный вопрос. Я хочу создать набор объектов (известных во время разработки), каждый из которых имеет определенные функции, связанные с ними. Я могу либо сделать это, указав свойства моих объектов, которые могут содержать "делегатов":
public class StateTransition {
Func<bool> Condition { get; set; }
Action ActionToTake { get; set; }
Func<bool> VerifyActionWorked { get; set; }
}
StateTransition foo = new StateTransition {
Condition = () => {//...}
// etc
};
В качестве альтернативы я могу использовать абстрактный класс и реализовать его для каждого объекта, который я хочу создать:
public abstract class StateTransition {
public abstract bool Condition();
public abstract void ActionToTake();
public abstract bool VerifyActionWorked();
}
class Foo : StateTransition {
public override bool Condition() {//...}
// etc
}
Foo f = new Foo();
Я понимаю, что практические последствия (создание во время разработки и время выполнения) этих двух методов совершенно разные.
Как я могу выбрать, какой метод подходит для моего приложения?