yeap, send a pull request.
On 22/01/2011 6:44 AM, Rory Plaire wrote:
This has been assigned IOC-267
<http://issues.castleproject.org/issue/IOC-267>.
I have a fix which adds a generic constraint of 'where T : class' to
all classes which participate in service registration. This fix would
prevent the problem at compile-time.
All the Windsor tests pass with this change. What are thoughts about
this fix? If there is support, I'll submit it as a patch.
-r
2011/1/19 Krzysztof Koźmic <[email protected]
<mailto:[email protected]>>
yeap - feel free
On 20/01/2011 9:48 AM, Rory Plaire wrote:
Agreed - an exception on the value type registration would be
correct behavior in this scenario. Should I open a bug in youtrack?
-r
2011/1/19 Krzysztof Koźmic <[email protected]
<mailto:[email protected]>>
That's expected behavior.
Value types by definition are not components. I suppose
Windsor should be throwing when you try to register them in
the first place... in order to avoid confusion.
On 20/01/2011 9:28 AM, codekaizen wrote:
Castle maintainers -
I've come across what appears to be a bug in
DefaultKernel.ResolveAll
when asking for instances of value types. Here's a test case:
var kernel = new DefaultKernel();
kernel.Register(Component.For<String>().Named("A").Instance("A"));
kernel.Register(Component.For<String>().Named("B").Instance("B"));
// Works ok
var stringResolution = kernel.ResolveAll<String>();
kernel.Register(Component.For<Int32>().Named("1").Instance(1));
kernel.Register(Component.For<Int32>().Named("2").Instance(2));
// Throws 'ArgumentException: Target array type is not
compatible with
the type of items in the collection.'
var intResolution = kernel.ResolveAll<Int32>();
Note the ResolveAll<Int32>() throws an ArgumentException.
This is due
to ResolveAll using a generic Dictionary<IHandler,
object>; value type
instances are boxed and when the value collection is cast to
ICollection so that CopyTo() is available, it apparently
doesn't unbox
the references into the array created to hold value type
instances.
I replaced the Dictionary<IHandler, object> with
System.Collections.Hashtable, and the CopyTo method works
as expected,
so this could be a potential fix, however this then
breaks the
"ResolveAllTestCase.ResolveAll_honors_order_of_registration"
test. The
note on that test indicates that it is not a good test due to
fragility, and I'd have to agree. I can't believe it
works as it is
with a Dictionary.
Another fix would be to loop through the Values
collection on the
resolved instances and add them to the created array using
Array.SetValue, however this reduces performance, since
SetValue isn't
optimized.
Can anyone contribute to this discussion?
-rory
--
You received this message because you are subscribed to the
Google Groups "Castle Project Development List" group.
To post to this group, send email to
[email protected]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto:castle-project-devel%[email protected]>.
For more options, visit this group at
http://groups.google.com/group/castle-project-devel?hl=en.
--
You received this message because you are subscribed to the
Google Groups "Castle Project Development List" group.
To post to this group, send email to
[email protected]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto:[email protected]>.
For more options, visit this group at
http://groups.google.com/group/castle-project-devel?hl=en.
--
You received this message because you are subscribed to the Google
Groups "Castle Project Development List" group.
To post to this group, send email to
[email protected]
<mailto:[email protected]>.
To unsubscribe from this group, send email to
[email protected]
<mailto:castle-project-devel%[email protected]>.
For more options, visit this group at
http://groups.google.com/group/castle-project-devel?hl=en.
--
You received this message because you are subscribed to the Google
Groups "Castle Project Development List" group.
To post to this group, send email to
[email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/castle-project-devel?hl=en.
--
You received this message because you are subscribed to the Google Groups "Castle
Project Development List" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/castle-project-devel?hl=en.