C# 在属性的setter方法中,value属性是否可能是不同的数据类型

C# 在属性的setter方法中,value属性是否可能是不同的数据类型,c#,C#,我希望在setter中执行此代码,但是VisualStudio说“值”必须是相同的数据类型。有没有办法做到这一点 public Image projectImage { set { var byteArray = new WebClient().DownloadData(value); this.projectImage.Source = ImageSource.FromStream(() => new MemoryStream(byteAr

我希望在setter中执行此代码,但是VisualStudio说“值”必须是相同的数据类型。有没有办法做到这一点

public Image projectImage {
    set
    {
        var byteArray = new WebClient().DownloadData(value);
        this.projectImage.Source = ImageSource.FromStream(() => new MemoryStream(byteArray));       
    }
}

从文件中可以看出,签名为:

下载数据(字符串)

从指定的URI下载作为字节数组的资源

下载数据(Uri)

从指定的URI下载作为字节数组的资源

您为它提供了一种类型的映像,因此编译器自然会拒绝

您需要做的是在setter外部下载图像,然后为其分配图像(如果您想使用该值)

如果您想在这里这样做,则不能将字符串传递给setter

您可以做的是使用如下函数:

public bool SetImageFromUrl(string url) {
      var byteArray = new WebClient().DownloadData(url);
      this.projectImage.Source = ImageSource.FromStream(() => new MemoryStream(byteArray));
}

public Image projectImage {get; set; }

我尝试了这一点,但在这一行“this.projectmage.Source=ImageSource.FromStream(()=>newmemoryStream(byteArray));上出现System.NullReferenceException异常