对于 dapper,我需要构建对传入 AnsiString 参数的支持。
数据库同时具有 unicode 和非 unicode 字符串,选择正确的参数类型有时至关重要。
DbType.StringvsDbType.AnsiString对于特定参数会严重影响性能。
在 dapper 中,我们动态传递参数,例如:
Query<User>("select * from Users where Name=@Name", new {Name = "name"});
我有一张内部地图,上面写着如果我看到typeof(String)我知道将参数作为DbType.String 
但是,我希望我的用户能够指出该字符串应该是 AnsiString。匿名类不支持属性,因此我需要一个不同的类型。
显然我可以发明一个:
public class AnsiString 
{
    private readonly string str;
    public AnsiString(string str)
    {
        this.str = str;
    }
    public String Value { get { return str; } }
}
这会给我干净的API:
Query<User>("select * from Users where Name=@Name", 
   new {Name = new AnsiString("name")});
但是,如果 System.Data 或 BCL 中存在这样的类,为什么要发明一个。
BCL 中的某处是否有类型,或者System.Data我可以用作 的容器AnsiString,其语义与上面的示例相似?