public interface IRefactoringPresenter<TViewModel, TModel>
{
TViewModel ViewModel { get; }
TModel Model { get; }
void Initialize(TViewModel viewModel, TModel model);
}
public class RefactoringPresenterFactory
{
public TPresenter Create<TPresenter, TViewModel, TModel>(TModel model)
where TPresenter:IRefactoringPresenter<TViewModel, TModel>, new()
where TViewModel : new()
{
var presenter = new TPresenter();