我在PRISM + Unity环境中。当通过
注册Type时,是否可以收到通知UnityContainer.RegisterType<IMyType,MyType>();
就像在其他地方调用此方法时会出现一个事件或某事?
答案 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。你不能用你自己的方法包装组件注册并在那里举办活动吗?