小编val*_*ero的帖子

异步/等待的体系结构

如果你在架构中的较低级别使用async/await,是否有必要"冒泡"async/await调用一直向上,这是低效的,因为你基本上是为每个层创建一个新线程(异步调用每个层的异步函数,或者它真的不重要,只是取决于您的偏好?

我正在使用EF 6.0-alpha3,以便我可以在EF中使用异步方法.

我的存储库是这样的:

public class EntityRepository<E> : IRepository<E> where E : class
{
    public async virtual Task Save()
    {
        await context.SaveChangesAsync();
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我的业务层是这样的:

public abstract class ApplicationBCBase<E> : IEntityBC<E>
{
    public async virtual Task Save()
    {
        await repository.Save();
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,我的UI中的方法在调用时会遵循相同的模式.

这是:

  1. 必要
  2. 表现不利
  3. 只是一个偏好的问题

即使在单独的图层/项目中没有使用它,如果我在同一个类中调用嵌套方法,则同样的问题也适用:

    private async Task<string> Dosomething1()
    {
        //other stuff 
        ...
        return await Dosomething2();
    }
    private async Task<string> Dosomething2()
    {
        //other stuff 
        ...
        return await Dosomething3();
    }
    private async Task<string> Dosomething3()
    {
        //other stuff 
        ... …
Run Code Online (Sandbox Code Playgroud)

.net c# asynchronous async-await c#-5.0

58
推荐指数
2
解决办法
8332
查看次数

在C#中检查泛型方法的类型参数

是否有可能在C#中做这样的事情:

public void DoSomething<T>(T t)  
{
    if (T is MyClass)
    {
        MyClass mc = (MyClass)t 
        ...
    }
    else if (T is List<MyClass>)
    {
        List<MyClass> lmc = (List<MyClass>)t
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

c# generics typechecking

56
推荐指数
3
解决办法
5万
查看次数

MEF构造函数注入

我试图找出MEF的构造函数注入属性.我不知道如何告诉它加载构造函数的参数.

这是我正在尝试加载的属性

[ImportMany(typeof(BUsers))]
public IEnumerable<BUsers> LoadBUsers { get; set; }
Run Code Online (Sandbox Code Playgroud)

这是我用来导入程序集的代码.

try
{
    var catalog = new AggregateCatalog();
    catalog.Catalogs.Add(new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly()));
    catalog.Catalogs.Add(new DirectoryCatalog("DI")); 
    var container = new CompositionContainer(catalog);
    container.ComposeParts(this);
}
Run Code Online (Sandbox Code Playgroud)

这是我正在尝试加载的类

[Serializable]
[Export(typeof(BUsers))]
public class EditProfile : BUsers
{
    [ImportingConstructor]
    public EditProfile(string Method, string Version)
    {            
        Version = "2";
        Action = "Edit";
        TypeName = "EditProfile";
    }
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection mef constructor-injection

39
推荐指数
2
解决办法
4万
查看次数

Xamarin Auth Store钥匙扣在ios10升级后无法正常工作

我正在使用Xamarin.Auth(https://components.xamarin.com/view/xamarin.auth/)存储我的凭据,就像我一直以来一样.

var accountStore = AccountStore.Create ();
foreach (var account in  accountStore.FindAccountsForService("myAppName"))
    accountStore.Delete (account, "myAppName");

AccountStore.Create().Save(acc, "myAppName");
Run Code Online (Sandbox Code Playgroud)

升级到iOS 10后,我收到此错误存储凭据:

"Could not save account to KeyChain: -34018"

at Xamarin.Auth.KeyChainAccountStore.Save (Xamarin.Auth.Account account,System.String serviceId) [0x000b2] in <402cf9b3716845b3bdddef581cb33a3e>:0 
Run Code Online (Sandbox Code Playgroud)

安装最新版本1.2.3.1问题似乎只存在于SIMULATOR上

xamarin.ios xamarin xamarin.auth

34
推荐指数
2
解决办法
1万
查看次数

如何将对象传递给Xamarin Forms自定义渲染器?

如何将某个对象的实例传递给Xamarin Forms custom render

这是自定义渲染器......

public class LoginPageRenderer : PageRenderer
{
    public override void ViewDidAppear (bool animated)
    {
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我想要做的......(注意ctor已被添加......)

public class LoginPageRenderer : PageRenderer
{
    private SomeFoo _someFoo;

    public LoginPageRenderer(MyFoo someFoo)
    {
        _someFoo = someFoo;
    }

    public override void ViewDidAppear (bool animated)
    {
        ....
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,这是调用此视图的位置(在代码的其他部分).

await _navigationPage.Navigation.PushModalAsync(new LoginPage());

xamarin xamarin.forms

10
推荐指数
1
解决办法
2149
查看次数

如何在Xamarin Android中使用RunOnUIThread()

我想在将结果输入OStateUserId对象后运行此语句.

details.Text = OStateUserID.name + "\n" + OStateUserID.population);

bStateuserID.Click +=  async delegate 
{
    details.Text=" ";
    Guid x = new Guid("33F8A8D5-0DF2-47A0-9C79-002351A95F88");
    state OStateUserID =(state) await obj.GetStateByUserId(x.ToString());
    details.Text = OStateUserID.name + "\n" + OStateUserID.population);
};
Run Code Online (Sandbox Code Playgroud)

GetStateByUserId()方法返回一个对象class State.

它以异步方式运行.完成操作后,我想将名称填充分配给TextView详细信息.

RunOnUIThread()在这种情况下如何使用?

xamarin xamarin-studio

9
推荐指数
2
解决办法
3万
查看次数

Xamarin.Forms访问代码中用标记编写的控件

我试图将一些项添加到Listview,我在xaml文件中使用Xamarin.Forms标记添加.可以通过单击事件挂钩来访问该按钮.但由于列表视图为空,我需要ondraw类似winforms 的事件,以便在绘制时可以挂钩.

在此输入图像描述

在XAML文件中,我有:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="ButtonXaml.ButtonXamlPage">
             <StackLayout>
  <Button Text="Tap for click count!"
    BorderWidth="10"
    TextColor="Red"
    HorizontalOptions="Center"
          Clicked="OnButtonClicked" />
          <ListView 
          HorizontalOptions="Center"

          />

   </StackLayout>
</ContentPage>
Run Code Online (Sandbox Code Playgroud)

在我的.cs文件中

using System;
using Xamarin.Forms;

namespace ButtonXaml
{
    public partial class ButtonXamlPage
    {
        int count = 0;

        public ButtonXamlPage()
        {
            InitializeComponent();
        }

        public void OnButtonClicked(object sender, EventArgs args)
        {
            ((Button)sender).Text = "You clicked me";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我应该挂钩Listview中的事件,还是可以Resource.getElementbyID像我们在android中那样做

c# mono android xamarin.forms

9
推荐指数
2
解决办法
2万
查看次数

Bootstrap下拉菜单文本颜色

所以我第一次使用Twitter的Bootstrap,我试图在它们崩溃后更改下拉菜单中文本的颜色.(如果这是有道理的)

我使用这个网站(<<< ---我正在使用的CSS链接)来帮助一些CSS,但我似乎无法找到正确的代码块来改变正确文本的颜色.

当您压缩网页以显示折叠菜单并转到下拉列表时,您将看到蓝色背景转移到下拉菜单项,但字体颜色为黑色,因此很难阅读.我希望这个字体是白色的.

<nav class="navbar navbar-custom" role="navigation">
    <!-- Brand and toggle get grouped for better mobile display -->
    <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse"
                data-target="#bs-example-navbar-collapse-1">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="#">ATR Notary</a>
    </div>

    <!-- Collect the nav links, forms, and other content for toggling -->
    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
        <ul class="nav navbar-nav">
            <li class="dropdown">
                <a href="~/Order/Index" class="dropdown-toggle"
                   data-toggle="dropdown">Orders <b class="caret"></b></a>
                <ul class="dropdown-menu">                                    
                    <li><a href="~/Order/Index">View Orders</a></li>
                    <li><a href="~/Order/Create">Add Order</a></li>
                </ul>
            </li> …
Run Code Online (Sandbox Code Playgroud)

css twitter-bootstrap drop-down-menu twitter-bootstrap-3

8
推荐指数
2
解决办法
5万
查看次数

Xamarin Forms在create上填充数据异步

我有一个绑定到ViewModel的Xamarin表单.创建此ViewModel时,我希望它以异步方式从数据库中获取数据.我的问题是我不确定如何调用异步方法,因为构造函数无法调用异步方法,并且getter无法调用异步方法.

我在UI中使用纯XAML,XAML是否可以在初始化时调用方法?

我的ViewModel:

public class DonorViewModel : BaseViewModel
{
    public DonorViewModel (IRepository<Donor> donorRepository)
    {
        _donorRepository = donorRepository;
    }

    private string _name;

    public string Name { 
        get {               
            return _name;
        }
        set {
            if (_name != value) {
                _name = value;
                OnPropertyChanged ("Name");
            }
        }
    }

    private IRepository<Donor> _donorRepository;

    private async Task GetName()
    {
        var donor = await _donorRepository.Get(d => d.Id == 1);
        Name = donor.Name;
    }
}
Run Code Online (Sandbox Code Playgroud)

我的XAML:

<?xml version="1.0" encoding="UTF-8"?>
<d:ViewPage xmlns="http://xamarin.com/schemas/2014/forms"       
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
            x:Class="DonationExample.DonorView"
            xmlns:d="clr-namespace:DonationExample;assembly=DonationExample" 
            x:TypeArguments="local:DonorViewModel"
            xmlns:local="clr-namespace:DonationExample">
    <ContentPage.BindingContext>

    </ContentPage.BindingContext> …
Run Code Online (Sandbox Code Playgroud)

xamarin xamarin.forms

8
推荐指数
2
解决办法
6225
查看次数

Android CardView的自定义渲染器未显示Forms组件内容

我创建了一个自定义组件,它扩展了ContentView和渲染器,渲染到Android上的CardView.

我面临的问题是Forms内容是在CardView下面呈现的.在KitKat上,这不会发生,但我认为CardView实现与Lollipop或更新版本不同.

将CardView的背景颜色设置为透明(0x00000000)会显示CardView下方的内容.

表单组件:

using Xamarin.Forms;

namespace CodeFest
{
    public class NativeClientProfile : ContentView
    {
        public NativeClientProfile()
        {
            var grid = new Grid
            {
                RowDefinitions = new RowDefinitionCollection {new RowDefinition()},
                ColumnDefinitions = new ColumnDefinitionCollection {new ColumnDefinition(), new ColumnDefinition()}
            };
            grid.Children.Add(new Label {Text = "FSP No"}, 0, 0);
            grid.Children.Add(new Label {Text = "12345", HorizontalTextAlignment = TextAlignment.Center}, 1, 0);
            grid.Children.Add(new Label {Text = "Risk"}, 0, 1);
            grid.Children.Add(
                new Label {Text = "Low", TextColor = Color.Green, HorizontalTextAlignment = TextAlignment.Center}, 1, 1);
            var item …
Run Code Online (Sandbox Code Playgroud)

xamarin.android xamarin xamarin.forms

8
推荐指数
1
解决办法
516
查看次数