这是我想要做的事情。
Class1:baseclass
private void Update()
{
base.Update(Updated);
}
private void Updated(IRestResponse<thisClass> response)
{
....
}
...
基类:
public void Update(<T> callback)
{
RestClient client = new RestClient("https://www.googleapis.com");
client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(App.AuthenticationResult.access_token);
var request = new RestRequest(path, Method.GET);
client.ExecuteAsync<...T...>(request, callback);
}
基本上我希望能够在遵循相同结构的多个类中重用基类中的Update。
答案 0 :(得分:0)
目前,您的基类Update
方法存在一些语法错误。
public void Update<T>(T callback)
{
RestClient client = new RestClient("https://www.googleapis.com");
client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(App.AuthenticationResult.access_token);
var request = new RestRequest(path, Method.GET);
client.ExecuteAsync<T>(request, callback);
}
如果参数是回调,那么它不应该是委托吗?
它不需要是通用的,但你可以这样做:
public delegate T CallbackDelegate<T>();
public void Update<T>(CallbackDelegate<T> callback)
{
RestClient client = new RestClient("https://www.googleapis.com");
client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(App.AuthenticationResult.access_token);
var request = new RestRequest(path, Method.GET);
client.ExecuteAsync<T>(request, callback);
}
答案 1 :(得分:0)
我从您的问题中收集到的是,您想要分享/重复使用Update()
,但在扩展类中有自定义Updated()
...
可能最简单的方法是在扩展类中重写的基类中创建一个虚方法:
public class BaseClass
{
public virtual void Updated() { }
public void Update()
{
RestClient client = new RestClient("https://www.googleapis.com");
client.Authenticator = new OAuth2AuthorizationRequestHeaderAuthenticator(App.AuthenticationResult.access_token);
var request = new RestRequest(path, Method.GET);
//implement whatever logic you want with the response.
this.Updated(); //include whatever parameters you need to pass.
}
}
public class Class1 : BaseClass
{
public override void Updated()
{
//implement logic specific to Class1...
}
}