jeudi 18 août 2016

Injecting repository instance into class

I've started designing parts of a fairly large system and was wondering what would be the best way to use repositories.

Which method would be better:

        static void Main(string[] args)
        {
            var dataRepository = new DataRepository();
            var classA = new ClassA(dataRepository);
            classA.Save();
        }

        public interface IDataRepository
        {
            void Save(ClassA myInstance);
        }

        public class DataRepository : IDataRepository
        {
            public void Save(ClassA myInstance)
            {
                //Do some stuff
            }
        }

        public class ClassA
        {
            private IDataRepository _dataRepository;
            public ClassA(IDataRepository dataRepository)
            {
                _dataRepository = dataRepository;
            }

            public void Save()
            {
                _dataRepository.Save(this);
            }
        }

Or should I do:

static void Main(string[] args)
{
    var dataRepository = new DataRepository();
    var classB = new ClassB();
    dataRepository.Save(classB);
}

public interface IDataRepository
{
    void Save(ClassB myInstance);
}

public class DataRepository : IDataRepository
{
    public void Save(ClassB myInstance)
    {
        //Do some stuff
    }
}

public class ClassB
{
    //some stuff    
}

Or is there any other way I could this more elegantly?

Aucun commentaire:

Enregistrer un commentaire