구조 주입

3607 단어 부어 넣다
이런 방식은 함수를 구성할 때 유형을 주입하는 것이다
직접 보기.
 public interface ITimeProvider

    {

        DateTime CurrentDate { get; }

    }



    public class TimeProvider : ITimeProvider

    {

        public DateTime CurrentDate { get { return DateTime.Now; } }

    }



    public class Assembler

    {

        static Dictionary<Type, Type> dictionary = new Dictionary<Type, Type>();

        static Assembler()

        {

            dictionary.Add(typeof(ITimeProvider), typeof(TimeProvider));

        }



        public object Creat(Type type)

        {

            if ((type == null) || !dictionary.ContainsKey(type))

                throw new NullReferenceException();

            return Activator.CreateInstance(dictionary[type]);

        }



        //      

        public T Creat<T>()

        {

            return (T)Creat(typeof(T));

        }

    }

다음은 구조 주입류를 보겠습니다.
 public class Client

    {

        ITimeProvider timeProvider;

        public Client(ITimeProvider timeProvider)

        {

            this.timeProvider = timeProvider;

        }

    }

그러면 클라이언트 호출 시
        [TestMethod()]

        public void ClientConstructorTest()

        {

            ITimeProvider timeProvider = (new Assembler()).Creat<ITimeProvider>();

            Assert.IsNotNull(timeProvider);

            Client target = new Client(timeProvider);

        }

이렇게 하면 Assembler에 의존하여 클라이언트 호출에 도달할 때 구체적인 유형을 알 필요가 없다

좋은 웹페이지 즐겨찾기