What do you mean by a "shared property"? Are you using "shared" in the VB.NET sense, which is "static" in C#? Also, what class are you using this in? I would think that this should be an abstract method of the base class that you override in the derived PreparedStatement classes.
Code:
    public abstract class Parent
    {
        public abstract IDbConnection GetConnection();
    }

    public class Child1 : Parent
    {
        public override IDbConnection GetConnection()
        {
            return new OleDbConnection();
        }
    }