将图片框中的图像从业务逻辑 Class 设置到主应用程序 Class

Set image in Picture-box from Business Logic Class to Main application Class

我根据软件架构写了一个c#代码。在业务逻辑层中,我实现了一个代码,通过它我可以从维基百科 api 中提取数据以获取图像。我想在 Form1.cs 的应用层上显示它。但它根本不起作用。我从维基百科获取图像的代码如下所示:

public class ImageService
{
    private string _baseUrl = "https://en.wikipedia.org/w/api.php?action=query&format=json&prop=pageimages&pithumbsize=400&titles={0}";

    public string GetImage(string name)
    {
        string requestUrl = string.Format(_baseUrl, name);
        string result;

        using (WebClient client = new WebClient())
        {    
            var response = client.DownloadString(new Uri(_baseUrl));
            var responseJson = JsonConvert.DeserializeObject<ImgRootobject>(response);
            var firstKey = responseJson.query.pages.First().Key;
            result = responseJson.query.pages[firstKey].thumbnail.source;
            string Image_title = responseJson.query.pages[firstKey].title;
        }
        return result;
    }
}

我的Form1.cs是:

public partial class Form1 : Form
{
    private readonly ImageService _imageService;
    public Form1()
    {

        _imageService = new ImageService();

        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
        pictureBox1.LoadAsync(_imageService);

    }
}

您没有从ImageService returns 字符串中调用GetImage 方法。 PictureBoxLoadAsync 方法接受一个 string 作为它的参数,但是你已经向它发送了一个 ImageService 的实例。应该是这样的:

pictureBox1.LoadAsync(_imageService.GetImage(a string parameter for name));