Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# IObservable不包含定义,但实际上其中包含定义_C#_Xamarin_Xamarin.forms_Akavache - Fatal编程技术网

C# IObservable不包含定义,但实际上其中包含定义

C# IObservable不包含定义,但实际上其中包含定义,c#,xamarin,xamarin.forms,akavache,C#,Xamarin,Xamarin.forms,Akavache,我试图通过Akavache加载缓存数据,但我不知道为什么我不能正确地获取它。我尝试获取登录后已缓存的全名和电子邮件,所以我在“CachedUser”模型中获取对象,但不知道为什么它说其中没有全名和电子邮件的定义。 这是我的CachedUser模型 namespace KGVC.Models { public class CachedUsers { public string FullName { get; set; } public string

我试图通过Akavache加载缓存数据,但我不知道为什么我不能正确地获取它。我尝试获取登录后已缓存的全名和电子邮件,所以我在“CachedUser”模型中获取对象,但不知道为什么它说其中没有全名和电子邮件的定义。 这是我的CachedUser模型

namespace KGVC.Models
{
    public class CachedUsers
    {
        public string FullName { get; set; }
        public string Email { get; set; }
    }
}
下面是我试图实现的在Akavache中获取对象的代码

   public void GetDataCache(object sender, EventArgs e)
        {
            var loaded =  BlobCache.LocalMachine.GetObject<CachedUsers>("usercached");

            txtemail.Text = loaded.FullName;
            txtfullname.Text = loaded.FullName.ToString();
        }
这是我得到的完整错误信息

'IObservable<CachedUsers>' does not contain a definition for 'FullName' and no extension method 'FullName' accepting a first argument of type 'IObservable<CachedUsers>' could be found (are you missing a using directive or an assembly reference?)
“IObservable”不包含“FullName”的定义,并且找不到接受“IObservable”类型的第一个参数的扩展方法“FullName”(是否缺少using指令或程序集引用?)

这里的问题是什么,因为我认为我的代码中没有任何错误。你能解决这个问题吗?

你需要等待它

 public async void GetDataCache(object sender, EventArgs e)
 {
    var loaded = await BlobCache.LocalMachine.GetObject<CachedUsers>("usercached");

    txtemail.Text = loaded.FullName;
    txtfullname.Text = loaded.FullName.ToString();
 }

研究async/await和
IObservable
对象的概念,以便更好地理解这些概念以及在这种特定情况下的问题所在。

感谢兄弟与Subscribe的合作,但是有一件事让我怀疑我不能使用wait,它说的IObservable没有包含get waiter的定义。但最终我的代码是有效的,我只是好奇这里,啊哈,啊哈,我现在没有实际的代码来帮你检查。从记忆中我记得这样的事情,我想你可以两者兼而有之。所以可能是该方法的过载。但也许它在最近的版本中被删除了。很高兴它有帮助@TheodorusAgumGumilang包含一个用于
System.Reactive.Linq
的using语句,它使您能够等待一个可观察的事件
 public async void GetDataCache(object sender, EventArgs e)
 {
    var loaded = await BlobCache.LocalMachine.GetObject<CachedUsers>("usercached");

    txtemail.Text = loaded.FullName;
    txtfullname.Text = loaded.FullName.ToString();
 }
 public async void GetDataCache(object sender, EventArgs e)
 {
    var loaded = await BlobCache.LocalMachine.GetObject<CachedUsers>("usercached").Subscribe(user => {
        // TODO might need to wrap this in a Device.BeginInvokeOnMainThread
        txtemail.Text = user.FullName;
        txtfullname.Text = user.FullName.ToString();
    });
 }