Если честно, это слишком усложняет ситуацию, вместо этого я бы настоятельно рекомендовал использовать синтаксис инициализатора объекта :
var someObject = new SomeObject() { Status = customStatus};
Тем не менее, вы можете решить свою текущую проблему, используяSystem.Action<SomeObject>
, который указывает ожидаемый тип ввода вместо System.Action
, затем измените соответствующие места в вашем коде:
class SomeObject
{
public System.Action<SomeObject> Action {get; set;}
public string Status {get; set;}
public SomeObject() : this(null)
{
}
public SomeObject(System.Action<SomeObject> action)
{
this.Action = action;
}
public void Execute()
{
this.Action(this);
}
}
Затем выполните следующее:
const string customStatus = "Custom status";
var someObject= new SomeObject((s) => s.Status = customStatus);