Я не уверен, что это ответ на ваш вопрос, но здесь идет.
Во-первых, IActor1 и IActor2 должны иметь общий базовый интерфейс с общими свойствами:
public interface IActorBase {
public Property2 { get; set; }
}
Теперь Действия должны иметь общую базу
public abstract class ActionBase<TActor> where TActor: IActorBase {
public List<String> StringList { get; set; }
public List<TActor> ActorList { get; set; }
}
Затем вы реализуете свои Action1 и Action2 как таковые:
public class Action2 : ActionBase<IActor2> { }
public class Action1 : ActionBase<IActor1> {
public enum Action1Type Type { get; set; }
}
Я не уверен, что вы могли бы сделать здесь без подробностей ...