我已經看過使用typedef的stackoverflow上的例子,但它看起來像它主要用於回調,所以不知道它是否與我正在工作的相關。 我執行使用確實RPC泛型類...實例化飛鏢中的泛型類
abstract class Message {
int created = new DateTime.now().millisecondsSinceEpoch;
Map map = new Map();
Map toJson();
void fromJson(String json){
map = JSON.decode(json);
this.created = map["created"];
}
String toString() {
return JSON.encode(this);
}
Message(){
map["created"] = created;
}
}
___Request和___Response兩個擴展消息:
import 'Message.dart';
class TestResponse extends Message {
String test;
String message;
Map toJson() {
map["test"] = this.test;
return map;
}
fromJson(String json) {
super.fromJson(json);
this.test = map["test"];
this.message = map["message"];
}
}
現在,當我嘗試做一個普通的RPC類,皮張所有發送和接收消息的樣板,我需要創建一個新的響應類實例來發回它。 (我寧願做RPC.submit,但是這給了我一個錯誤,說靜態靜態成員不能引用類型參數,所以我的另一個選擇是可能濫用構造函數語法,例如RPC.submit(json,uri)。 GETRESPONSE()...)
import 'package:http/browser_client.dart';
import 'Message.dart';
class RPC<REQ extends Message, RES extends Message> {
RES submit(REQ req, String uri){
var client = new BrowserClient();
var url = "http://localhost:9090/application-api" + uri;
RES res = new RES(); // <----- can't do this
client.post(url, body: req.toString()).then((response){
print("Response status: ${response.statusCode}");
print("Response body: ${response.body}");
res.fromJson(response.body);
});
return res;
}
}
在我提出的方法,我可以明顯地傳入的「RES RES」的實例,只是使用,但我希望它可以通用的RPC內部完成,而不太多額外的樣板,是否有可能在飛鏢?
確定,所以基於這樣的錯誤報告,這是沒有可能做到這一點。因此,現在看來,獲得單線程RPC調用的最簡單方法是執行TestResponse res = new RPC()。submit(req,new TestResponse(),「/ test」);經過修飾的構造函數聽起來很亂,但我可以看到其他可能有用的場景。感謝Günter! –
你可以發表你的解釋Günter簡單的代碼示例? – Challe
我更新了我的答案。 –