我试图在谷歌搜索它但找不到答案所以我会在这里试试。 我正在使用Subonic并尝试使用以下方法填充对象:
Model.Object o = new Select()
.From<Object>()
.Where("Id")
.IsEqualTo(id)
.ExecuteSingle<Model.Object>();
这样做时我得到错误: “System.String”类型的对象无法转换为“CustomType”类型 其中一个属性作为varchar存储在数据库中。在Model.object中,此属性定义为CustomType。我已经在这个类型中添加了一个隐式运算符:
public static implicit operator CustomType(String value)
{
return new CustomType(value);
}
我在这里做错了什么?还是我错过了什么?任何帮助表示赞赏
答案 0 :(得分:0)
尝试实施自己的TypeConverter,以便可以从字符串表示形式重新创建Model.Object
。
修改即可。在深入研究SubSonic代码后,我发现这无济于事(请参阅this,BuildTypedResult<T>
)。如果您愿意,请尝试实施IBaseRecord
,并实施Load()
方法。
答案 1 :(得分:0)
如果这是我的项目,我可能会为Model.Object构建一个部分类,然后在那里弹出一个工厂方法,或者可能是另一个带有Reader的构造函数重载。然后,您可以根据需要使用该阅读器加载属性,然后再投射CustomType。