如何制作飞镖地板类型转换器的继承层次结构?
如下所示,我定义listConverter< t>
以制作继承层次结构。
abstract class ListConverter<T> extends TypeConverter<List<T>, String> {
static const delimiter = "!DELIMITER!";
T fromDB(String databaseValue);
String toDB(T value);
@override
List<T> decode(String databaseValue) {
return databaseValue
.split(delimiter)
.where((element) => element.isNotEmpty)
.map((e) => fromDB(e))
.toList();
}
@override
String encode(List<T> value) {
return value.map((e) => toDB(e)).join(delimiter);
}
}
使用listConverter&lt; t&gt;
,我实现intlistConverter
。
class IntListConverter extends ListConverter<int> {
@override
int fromDB(String databaseValue) {
return int.parse(databaseValue);
}
@override
String toDB(int value) {
return value.toString();
}
}
我的计划是使用listConverter&lt; t&gt;
在strignlistListConverter
等上使用。 但是不幸的是,我在运行floe_generator
时收到了此错误消息。
[严重] floor_generator:lober_generator在lib/persistence/db/app_database.dart上: 只有从TypeConverter继承的类才能用作类型转换器。确保使用从TypeConverter继承的类。
我知道层次结构(b)效果很好,但是我想构建用于管理其他列表转换器的(A)结构。
- (a)
typeconverter-&gt; listConverter-&gt; intlistConverter
- (b)
typeconverter-&gt; intlistConverter
如何制作飞镖地板类型转换器的继承层次结构?
As below, I define ListConverter<T>
to make inheritance hierarchy.
abstract class ListConverter<T> extends TypeConverter<List<T>, String> {
static const delimiter = "!DELIMITER!";
T fromDB(String databaseValue);
String toDB(T value);
@override
List<T> decode(String databaseValue) {
return databaseValue
.split(delimiter)
.where((element) => element.isNotEmpty)
.map((e) => fromDB(e))
.toList();
}
@override
String encode(List<T> value) {
return value.map((e) => toDB(e)).join(delimiter);
}
}
Using ListConverter<T>
, I implement IntListConverter
.
class IntListConverter extends ListConverter<int> {
@override
int fromDB(String databaseValue) {
return int.parse(databaseValue);
}
@override
String toDB(int value) {
return value.toString();
}
}
My plan was to use ListConverter<T>
also on StringListConverter
, etc.
But unfortunately, I got this error message while running floor_generator
.
[SEVERE] floor_generator:floor_generator on lib/persistence/db/app_database.dart:
Only classes that inherit from TypeConverter can be used as type converters. Make sure use a class that inherits from TypeConverter.
I know that Hierarchy (B) works well, but I want to build (A) structure for managing other list converters.
- (A)
TypeConverter -> ListConverter -> IntListConverter
- (B)
TypeConverter -> IntListConverter
How to make inheritance hierarchy for Type Converter of Dart Floor?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我以回旋的方式解决了这个问题。
我使用
mixin
关键字而不是直接继承。I resolved this problem in a roundabout way.
I use
mixin
keyword instead of direct inheritance.