Class 如何在Dart中注册零件工厂
我有很多图书馆的部分。但所有类型都相同(扩展部分) 第1部分:省道Class 如何在Dart中注册零件工厂,class,dart,Class,Dart,我有很多图书馆的部分。但所有类型都相同(扩展部分) 第1部分:省道 part of cars; class Bmw extends Car { Bmw.Car() { } } part of cars; class Audi extends Car { Audi.Car() { } } 部分零件; 类Part1扩展了部分{/*…*/} add((varOfSomeClass){返回新的Part1(varOfSomeClass+1);}); 第2部分:省道 part
part of cars;
class Bmw extends Car {
Bmw.Car() {
}
}
part of cars;
class Audi extends Car {
Audi.Car() {
}
}
部分零件;
类Part1扩展了部分{/*…*/}
add((varOfSomeClass){返回新的Part1(varOfSomeClass+1);});
第2部分:省道
part of cars;
class Bmw extends Car {
Bmw.Car() {
}
}
part of cars;
class Audi extends Car {
Audi.Car() {
}
}
部分零件;
类Part2扩展了部分{/*…*/}
add((varOfSomeClass){返回新的Part2(varOfSomeClass-1);});
零件。省道
part of cars;
class Bmw extends Car {
Bmw.Car() {
}
}
part of cars;
class Audi extends Car {
Audi.Car() {
}
}
库部件;
第1部分:省道;
第二部分“第二部分飞镖”;
列出零件=新列表();
类部件{
getPart(int索引){
if(部件包含(索引)){
返回零件[索引](SomevarOfThis类);
}
}
}
输出:错误:意外标记“部件”
如何在不创建所有零件类的情况下获取所有包含的工厂
例如,我们需要做:
宝马飞镖
part of cars;
class Bmw extends Car {
Bmw.Car() {
}
}
part of cars;
class Audi extends Car {
Audi.Car() {
}
}
自动编程的一部分;
宝马级{
字符串颜色;
宝马(这个颜色);
}
列表。添加((颜色){
返回新宝马(颜色);
});
Lada.dart
part of cars;
class Bmw extends Car {
Bmw.Car() {
}
}
part of cars;
class Audi extends Car {
Audi.Car() {
}
}
自动编程的一部分;
拉达级{
列表颜色;
}
列表。添加((颜色){
var auto=新的Lada();
auto.color=hex2rgb(颜色);
自动返回;
});
自动省道
part of cars;
class Bmw extends Car {
Bmw.Car() {
}
}
part of cars;
class Audi extends Car {
Audi.Car() {
}
}
库自动;
汽车类{
getByIndex(int索引){
if(列表包含(索引)){
返回列表[索引](颜色);
}
返回null;
}
}
看起来您的问题在于您的代码在类或函数定义之外。如果我猜你想正确地做什么,你想让BMW.dart看起来像
自动编程的一部分;
宝马级{
字符串颜色;
宝马(这个颜色);
}
然后在main()
方法中有如下代码
main(){
列表=[];
列表.添加((颜色)=>新宝马(颜色));
}
这将使上面的代码运行。不过,这可能不是构建程序的最佳方式。您可能需要更多地阅读Dart工厂构造函数。这是一个很好的起点。我不知道您需要它做什么,但使用镜像如何: main.dart 图书车
import 'dart:mirrors';
part 'bmw.dart';
part 'audi.dart';
abstract class Car {
}
void main() {
List<Car> cars = new List<Car>();
Map libraries = currentMirrorSystem().libraries;
LibraryMirror mirror = libraries[libraries.keys.last];
mirror.declarations.forEach((Symbol s, DeclarationMirror mirror) {
if(mirror is ClassMirror) {
if(!mirror.isAbstract && mirror.isAssignableTo(reflectType(Car))) {
// new Symbol(mirror.reflectedType.toString()))
cars.add(mirror.newInstance(#Car, []).reflectee);
}
}
});
print(cars);
}
奥迪飞镖
part of cars;
class Bmw extends Car {
Bmw.Car() {
}
}
part of cars;
class Audi extends Car {
Audi.Car() {
}
}
为了我的口味,你的代码中有很多“部分”。很难看出你真正想要完成什么。什么代码行产生错误?“list.add((color){”我需要一个代码结构,在其中我将能够创建一辆新车,而不更改main.dart和Auto.dart文件。只能添加新文件并将其作为“newCar.dart”的一部分包含在Auto.dart中?