[ 
https://issues.apache.org/jira/browse/IBATISNET-210?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gilles Bayon closed IBATISNET-210.
----------------------------------

       Resolution: Fixed
    Fix Version/s: DataMapper 1.6.1
         Assignee: Gilles Bayon

In SVN

> Finding properties on interfaces which "inherites" other interfaces
> -------------------------------------------------------------------
>
>                 Key: IBATISNET-210
>                 URL: https://issues.apache.org/jira/browse/IBATISNET-210
>             Project: iBatis for .NET
>          Issue Type: Bug
>          Components: DataMapper
>    Affects Versions: DataAccess 1.9, DataMapper 1.6
>         Environment: Visual Studio 2005. .NET 2.0, Windows
>            Reporter: Henrik Uffe Jensen
>         Assigned To: Gilles Bayon
>             Fix For: DataMapper 1.6.1
>
>
> Here is the scenario explained. Don't know if this is really a bug or 
> something that iBatis is just not supposed to support
> First of all lets sketch some simple interfaces and domain classes
> public interface IBaseDomain
> {
>     Guid Id { get; set; }
> }
> public interface IAddress : IBaseDomain
> {
>     string Streetname { get; set; }
> }
> public interface IUser : IBaseDomain
> {
>    IAddress Address { get; set; }
> }
> public class BaseDomain : IBaseDomain
> {
>     public Guid Id
>     {
>              get { ......... }
>              set { ......... }
>     }
> }
> public class Address : IBaseDomain, IAddress
> {
>     public string Streetname
>     {
>             get { ......... }
>             set { ......... }
>     }
> }
> public class User : IBaseDomain, IUser
> {
>     public IAddress Address
>     {
>         get { .......... }
>         set { .......... }
>     }
> }
> Then in a SqlMap we have some statements etc. and a resultmap based on the 
> 'User' class which uses 'Address.Id' and 'Address.Streetname' in the 
> propertynames.... and then problems start because iBatis can only find 
> 'Streetname' property on IAddress and not property 'Id'. The reason is that 
> 'Id' exists in 'IBaseDomain' interface and not directly in the 'IAddress' 
> interface.
> In IBatisNet.Common.Utilities.Objects.ReflectionInfo and 
> IBatisNet.Common.Utilities.Objects.Members.DelegatePropertyGetAccessor (only 
> two places I got problems but maybe more exists) you will get en exception 
> saying that "Property 'Id' on..... can not be found"
> What I did to get going was to do some minor corrections in the mentioned 
> classes where I check if type is an interface and in that case I don't only 
> check for available properties on the type itself, but also use 
> GetInterfaces() on the type to enumerate "inherited" interfaces and check for 
> the property on these types.
> I have found no sideeffects on these little hacks but I'm also only using a 
> minor part of the framework 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to