Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

In class AssemblyTypeSource, use of Assembly.GetTypes is breaking change #185

Open
cbp123 opened this issue Oct 29, 2012 · 5 comments
Open

Comments

@cbp123
Copy link

cbp123 commented Oct 29, 2012

In FluentNH 1.2 and prior the class AssemblyTypeSource implemented the ITypeSource.GetTypes method using Assembly.GetExportedTypes. The new implementation in FluentNH uses Assembly.GetTypes.

GetExportedTypes only requires dependent DLLs to be in the application bin directory when types from that DLL are exposed publicly, where GetTypes requires all dependent DLLs to be in the appication's bin directory, even if they are only used privately.

This change in behaviour can be annoying. I'm not sure if it was intended or if there is a work around.

@chester89
Copy link
Collaborator

I think the default behaviour should be GetExportedTypes. And if different behaviour is needed, may be Fluent should provide one or two shortcuts (like GetTypes mentioned above). Any thoughts?

@cbp123
Copy link
Author

cbp123 commented Oct 29, 2012

Yes I think .GetTypes would be unusual. Perhaps an overload to the FluentMappings.AddFromAssemblyOf() methods would have been better, e.g. FluentMappings.AddFromAssemblyOf(getNonPublicTypes: true)

@chester89
Copy link
Collaborator

If I'm not too busy this week, I'll do it

@jagregory
Copy link
Collaborator

The change to use GetTypes was deliberate. One of the most common beginner
mistakes was making their mappings private, and them not being picked up by
FNH.

There's also a set of users don't like making their mappings public, and
therefore exposing them as part of the assembly's external API; so
GetExportedTypes wouldn't pick up those mappings, while GetTypes does.

Happy for there to be an overload/switch somewhere though. I'm undecided on
the default though, as the reason for this still stands (users not making
their mapping public).

On Tue, Oct 30, 2012 at 1:19 AM, Gleb Chermennov
[email protected]:

If I'm not too busy this week, I'll do it


Reply to this email directly or view it on GitHubhttps://github.com//issues/185#issuecomment-9868323.

James Gregory

Tel: +61 (0) 411 619 513
Website: http://jagregory.com
Twitter: @jagregory http://twitter.com/jagregory

@chester89
Copy link
Collaborator

I see. In that case, I think that adding a line in docs will do for now

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants