在UnityContainer中注册Type时收到通知

时间:2015-01-10 10:45:13

标签: c# .net unity-container prism

我在PRISM + Unity环境中。当通过

注册Type时,是否可以收到通知
UnityContainer.RegisterType<IMyType,MyType>();

就像在其他地方调用此方法时会出现一个事件或某事?

3 个答案:

答案 0 :(得分:1)

您可以为Unity容器编写自定义扩展。它的基类是UnityContainerExtension。您可以访问所需的活动。

public class NotificationUnityExtension : UnityContainerExtension
{
    protected override void Initialize()
    {
        Context.Registering += (sender, args) =>
        {
            // Called when type is registered
            Console.WriteLine($"Registering type {args.TypeTo.Name}");
        };
        Context.RegisteringInstance += (sender, args) =>
        {
            // Called when instance is registered
            Console.WriteLine($"Registering instance of type {args.Instance.GetType().Name}");
        };
    }
}

它的使用方式如下:

var container = new UnityContainer();
container.AddExtension(new NotificationUnityExtension());

答案 1 :(得分:0)

我不确定是否有这样的事件(我可能错了)但是这样的简单解决方案呢?

UnityContainer.RegisterType<IMyType,MyType>();
        if(UnityContainer.IsRegistered<IMyType>())
        {
           /* Do your stuff i.e. add some components via
              the regionmanager to a region as soon as a specific type
              is registered */
        }

答案 2 :(得分:0)

我不确定这是否适合您。我想如果存在此类事件,您已经检查过UnityContainer API。你不能用你自己的方法包装组件注册并在那里举办活动吗?