Get property value of any entity in NHibernate in a generic way
I need to create a method like this:

    object GetPropertyValue(object entity, string databaseColumnName, int index);

that will take any entity, a column name which is represented as a property in entity class and an optional index that is used if DB column is located inside collection property by some index.

For example: 

Field entity has a property - Wells, that is a set of Well entities.
and I need to get a Well Name of the second well from Wells collection.
The point is that I don't know anything about Field entity, I only have an interface - IEntity and I know that it is a field object (not a Field instance, but a business object Field recognised by an end user).
So I call GetPropertyValue(IEntity, "WELL_NAME", 1) to get needed value.
----------

With reflection I'm able to get a Field instance, go through all its properties, relationships properties and find my WellName property, after which I could get a Wells property and call Field.Wells[1].WellName - all via reflection....
The approach sucks :( 

Please help me writing down this method better that won't affect performance.

PS: I need use this method, because we have to deal with very old legacy domain model across same legacy UI :(

Thanks, Alex 
Get property value of any entity in NHibernate in a generic way
===

I need to create a method like this:

    object GetPropertyValue(object entity, string databaseColumnName, int index);

that will take any entity, a column name which is represented as a property in entity class and an optional index that is used if DB column is located inside collection property by some index.

For example: 

Field entity has a property - Wells, that is a set of Well entities.
and I need to get a Well Name of the second well from Wells collection.
The point is that I don't know anything about Field entity, I only have an interface - IEntity and I know that it is a field object (not a Field instance, but a business object Field recognised by an end user).
So I call GetPropertyValue(IEntity, "WELL_NAME", 1) to get needed value.
----------

With reflection I'm able to get a Field instance, go through all its properties, relationships properties and find my WellName property, after which I could get a Wells property and call Field.Wells[1].WellName - all via reflection....
The approach sucks :( 

Please help me writing down this method better that won't affect performance.

PS: I need use this method, because we have to deal with very old legacy domain model across same legacy UI :(

Thanks, Alex 