typedef를 사용하여 stackoverflow 예제를 살펴 봤지만 주로 콜백에 사용 된 것처럼 보입니다. 따라서 내가 작업중인 항목과 관련이 있는지 확실하지 않습니다. 내가 그 가죽 일반 RPC 클래스를 할 때 이제다트의 일반 클래스 인스턴스화
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"];
}
}
: 나는 ...
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 모두 확장 메시지 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 입술"의 인스턴스에 전달하고 그냥 사용하지만, 나는 그것이없이 일반 RPC 내부에서 수행 될 수 있음을 기대했다 수 너무 많은 여분의 상용구가 어떻게 든 다트에서 가능합니까?
확인 코드에서
// 어딘가에, 그것을 할 아직 수 없습니다. 그래서 지금은 한 줄짜리 RPC 호출을 얻는 가장 간단한 방법은 TestResponse res = new RPC(). submit (req, new TestResponse(), "/ test"); 클로저 된 생성자는 지저분하게 들리지만 유용 할 수있는 다른 시나리오를 볼 수 있습니다. 감사합니다 귄터! –
설명의 간단한 코드 예를 게시 할 수 있습니까? – Challe
내 대답이 업데이트되었습니다. –