我有一个名为Data的LINQ to SQL类,其类型为Data.Linq.Binary。我想创建一个包装类,从二进制字段中提取实际对象。我有多个类在Data表中存储信息。我知道通过上下文,因为在每个类中存储信息在数据表中ALWAYS存储相同的类型。我有一个类Something
,其方法是在数据表中添加/读取string
。
class Data // LINQ to SQL generated
{
System.Data.Linq.Binary Value {get; set;}
string Name {get; set;}
int ID {get; set;}
}
class Something
{
void Add(string s)
{
//using (db)
Data.Value = s.ToBinary(); //Convert the string to a byte[] then to Binary
}
}
然后我想要一个从二进制列中读取的属性:
class Something
{
string Value
{
//using (db)
get{ return Data.Value.ToString();//Convert to byte[] then to string }
}
}
这本身就可以很好地工作,但我有多个类来执行相同的交互。当然,我想要一个接口或一个抽象类,如下所示:
interface Binary<T>
{
void Add(T t);
T Value {get;}
}
这是我的问题:在Value getter中我有一个linq查询实际上返回带有Linq.Binary Value
的LinqToSql Data类,但在我的界面中我有一个T Value
。如何将linq查询转换为此二进制接口?像这样的东西,虽然它不起作用:
List<Binary<T>> Value
{
get
{
return (from D in db.Data
select D).Cast<Binary<T>>();
}
}
编辑:最后我的错误属性。它应该是价值,而不是名称。
答案 0 :(得分:0)
除非您希望自己的Data
类本身是通用的,否则它必须为特定的Binary<T>
实现T
,即string
,因此类声明如下所示:
class MyDataWrapper : Binary<string>
{
...
在这种情况下,Name实现看起来像这样:
List<Binary<string>> Name
{
get
{
return (from D in db.Data
select D).Cast<Binary<string>>();
}
}