IOC DI

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Practices.Unity;

namespace ConsoleApplication1 {
    class Program {
        static UnityContainer container = new UnityContainer();
        static void init() {
            container.RegisterType<IPlayer, Player>();
            container.RegisterType<IMediaFile, MediaFile>();
        }
        static void Main(string[] args) {

            init();

            OperationMain op1 = container.Resolve<OperationMain>();
            op1.PlayMedia();
            OperationMain op3 = container.Resolve<OperationMain>();
            op3.PlayMedia();

            //普通方式
            OperationMain op2 = new OperationMain(new Player(), new MediaFile());
            op2.PlayMedia();

            Console.Read();
        }
    }

    /// <summary>
    /// 用户播放媒体文件
    /// </summary>
    public class OperationMain {
        IMediaFile _mtype;
        IPlayer _player;

        public OperationMain(IPlayer player, IMediaFile mtype) {
            _player = player;
            _mtype = mtype;
        }

        public void PlayMedia() {
            _player.Play(_mtype);
        }
    }
    /// <summary>
    /// 播放器
    /// </summary>
    public interface IPlayer {
        void Play(IMediaFile file);
    }
    /// <summary>
    /// 默认播放器
    /// </summary>
    public class Player : IPlayer {
        public void Play(IMediaFile file) {
            Console.WriteLine(file.FilePath+"1");
        }
    }
    /// <summary>
    /// 媒体文件
    /// </summary>
    public interface IMediaFile {
        string FilePath {
            get;
            set;
        }
    }
    /// <summary>
    /// 默认媒体文件
    /// </summary>
    public class MediaFile : IMediaFile {
        public string FilePath {
            get;
            set;
        }
    }
}
原文地址:https://www.cnblogs.com/naliang/p/IOC.html