Print Page | Close Window

Extension Method MakeWeak error

Printed From: IdeaBlade
Category: DevForce
Forum Name: DevForce 2012
Forum Discription: For .NET 4.5
URL: http://www.ideablade.com/forum/forum_posts.asp?TID=3786
Printed Date: 21-Aug-2025 at 5:44pm


Topic: Extension Method MakeWeak error
Posted By: cefernan
Subject: Extension Method MakeWeak error
Date Posted: 09-Nov-2012 at 5:25am
I trying to implement a global cache repository as TempHire does. So, when registering an event with weak reference I receive an error:

Error Message: 
Exception has been thrown by the target of an invocation.

Detail:
Attempt by method 'IdeaBlade.Core.WeakEventHandler`2<System.__Canon,System.__Canon>..ctor(System.EventHandler`1<System.__Canon>, IdeaBlade.Core.UnregisterCallback`1<System.__Canon>)' to access method 'DomainServices.Helpers.GlobalCacheRepository`1<System.__Canon>.OnManagerCreated(System.Object, IdeaBlade.EntityModel.EntityManagerCreatedEventArgs)' failed.

Code:
 public GlobalCacheRepository(IEntityManagerProvider entityManagerProvider, IGlobalCache globalCache)
            : base(entityManagerProvider)
        {
            _globalCache = globalCache;
            
            entityManagerProvider.ManagerCreated += new EventHandler<EntityManagerCreatedEventArgs>(OnManagerCreated)
               .MakeWeak(eh => entityManagerProvider.ManagerCreated -= eh);

            if (globalCache != null)
                DefaultQueryStrategy = QueryStrategy.CacheOnly;
        }

What am I doing wrong?

PS: If I don't use MakeWeak it works.



Replies:
Posted By: smi-mark
Date Posted: 09-Nov-2012 at 5:57am
You need to open up your AssemblyInfo.cs file in your DomainServices project and add this line:

[assembly: InternalsVisibleTo("IdeaBlade.Core.SL, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b3f302890eb528"
                                                     + "1a7ab39b936ad9e0eded7c4a41abb440bead71ff5a31d51e865606b2a7e6d0b9dd0d92b113b9d1"
                                                     + "0fb13f01fb5d856e99c1e61777cf4772d29bad7e66ffb93fc5cbd63b395046c06ff57db6ecbeee"
                                                     + "4bdd6effc405878d65cfc4911708ed650da935d733fc5dc707f74910e025ac080543e01a6cc863"
                                                     + "b9f85ffc")]



Posted By: cefernan
Date Posted: 09-Nov-2012 at 7:47am
It works fine.

Thanks Mark.



Print Page | Close Window