小编Mad*_*han的帖子

在.NET 4.0应用程序域上加载针对.NET 4.5的程序集

假设系统安装了.NET 4.0和.NET 4.5.

是否可以从针对.NET 4.0编写的程序集中加载和使用.NET 4.5程序集?

简单地说,我可以从.NET 4.0代码调用Assembly.Load来加载.NET 4.5目标程序集吗?

.net c# .net-4.0 assembly-loading .net-4.5

14
推荐指数
1
解决办法
8575
查看次数

使用startForeground()调用的多个Foreground Services的单一通知

我有一个有两个服务的应用程序.

一个用于在其他应用程序上显示用于浮动(叠加)的UI WindowManager.另一种是使用位置跟踪GooglePlayAPI.我的应用总是运行这些服务.

我希望这些服务不被操作系统杀死.所以我打电话Service.startForeground().但是,通知抽屉中有两个通知.

有没有办法为这两种服务使用单一通知?

android android-service android-notifications

13
推荐指数
1
解决办法
4688
查看次数

IHostedService - StopAsync 与 Dispose

我正在构建一个IHostedService实现。我的服务做了一些事情,这些事情应该在服务终止时处理,例如将一些事件处理程序注册到StartAsync().

现在我想知道,我应该在哪里真正注销这些处理程序?我自然会这样做Dispose()。然而,StopAsync()那是为了什么?

在控制台应用程序环境中,我认为它会像这样工作:

  1. StopAsync()叫做
  2. Dispose()叫做

我希望我的应用程序设计良好并涵盖其他可能的场景。例如,后台服务。我认为在这种情况下,有一个选择StopAsync(),然后StartAsync()没有Dispose()之间的选择。我对吗?

我应该处理这种情况吗?我的意思是,去登记StartAsync()我是否已经以某种方式注册了?

很难在带有控制台应用程序的 .NET Core 中找到有关通用主机的一些最佳实践。

.net c# console-application .net-core

7
推荐指数
1
解决办法
4197
查看次数

拦截Ninject.无法加载IProxyRequestFactory

我正在学习使用Ninject和Interceptor模式.

我有以下拦截器.

public class MyInterceptor:IInterceptor
{
    public void Intercept(IInvocation invocation)
    {
        Console.WriteLine("Pre Execute: " + invocation.Request.Method.Name);

        foreach (var param in invocation.Request.Arguments)
        {
            Console.WriteLine("param : " + param);
        }

        invocation.Proceed();

        Console.WriteLine("Post Execute: " + invocation.Request.Method.Name);
        Console.WriteLine("Returned: " + invocation.ReturnValue);
    }
}
Run Code Online (Sandbox Code Playgroud)

并且有一个名为MyClass只有2个简单方法的类,虚拟允许拦截器处理它们.(两种方法是Echo和double,这就像他们的名字所说的那样.)

我通过NuGet将Ninject,Ninject.Extensions.Interception和Ninject.Extensions.Interception.DynamicProxy添加到我的项目中.

添加以下using声明.

using Ninject;
using Ninject.Extensions.Interception.Infrastructure.Language;
using Ninject.Extensions.Interception;
Run Code Online (Sandbox Code Playgroud)

我的Main方法,它执行引导看起来像这样.

static void Main(string[] args)
    {
        MyClass o = null;

        using (IKernel kernel = new StandardKernel())
        {

            kernel.Bind<MyClass>().ToSelf().Intercept().With(new MyInterceptor());
            o = kernel.Get<MyClass>();
        }

        o.Echo("Hello World!"); // Error …
Run Code Online (Sandbox Code Playgroud)

c# ninject castle-dynamicproxy ninject-extensions ninject-interception

5
推荐指数
1
解决办法
1076
查看次数

“所有其他操作”的 Azure Blob 计费明细

我正在查看我的 Azure 存储帐户的账单并尝试了解管理其成本。

目前,我的 blob 成本主要位于“所有其他操作”类别下。有没有办法查看这些操作是什么?

我想降低此成本,因此目标是更新我的应用程序,以便减少执行这些操作,但我需要首先确定它们是什么。

下面是我从成本分析中得到的图表。(存储账户、累计成本、按米分组)

蔚来成本分析

azure azure-storage cost-management azure-blob-storage

5
推荐指数
1
解决办法
2105
查看次数

获取系统插入的正确方法

我一直在使用view.rootWindowInsets.stableInsetTop和 底部 来获取状态栏和导航栏的高度,但是现在已弃用,文档建议使用 rootWindowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.systemBars()).top

所以我现在有下面的代码

   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)
        view.rootWindowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.systemBars()).top
    else
        @Suppress("DEPRECATION")
        view.rootWindowInsets.stableInsetTop
Run Code Online (Sandbox Code Playgroud)

这在 API 24 和 API 30 模拟器上有效,但是在运行 API 29 (Andorid 10) 的 Galaxy S20 FE 上这不起作用。

我收到以下错误

Accessing hidden method Landroid/view/WindowInsets$Type;->systemBars()I (blacklist, linking, denied)
2021-01-17 01:45:18.348 23013-23013/? E/AndroidRuntime: FATAL EXCEPTION: main
    Process: app.test.debug, PID: 23013
    java.lang.NoSuchMethodError: No static method systemBars()I in class Landroid/view/WindowInsets$Type; or its super classes (declaration of 'android.view.WindowInsets$Type' appears in /system/framework/framework.jar!classes3.dex)
Run Code Online (Sandbox Code Playgroud)

显然systemBars() 在 API 29 中被列入灰名单,在 API 30 中被列入黑名单。(尽管运行 API …

android windowinsets

5
推荐指数
0
解决办法
2192
查看次数

Flutter 冻结,未知/后备联合值

是否可以在冻结中使用后备/未知联合构造函数?

可以说我有这个工会:

@Freezed(unionKey: 'type')
@freezed
abstract class Vehicle with _$Vehicle {
  const factory Vehicle() = Unknown;
  
  const factory Vehicle.car({int someVar}) = Car;
  const factory Vehicle.moto({int otherVar}) = Moto;

  factory Vehicle.fromJson(Map<String, dynamic> json) => _$VehicleFromJson(json);
}
Run Code Online (Sandbox Code Playgroud)

现在,我收到一个带有新“类型”(例如“船”)的 JSON。

当我调用Vehicle.fromJson时,出现错误,因为这会陷入交换机的“FallThroughError”。

是否有任何注释,就像我们对 JsonKey 的注释一样?

@JsonKey(name: 'type', unknownEnumValue: VehicleType.unknown)
Run Code Online (Sandbox Code Playgroud)

我知道我们有一个“默认”构造函数,但该构造函数的“类型”是“默认”,因此“船”不会出现在该开关盒上。

谢谢

union json dart flutter freezed

4
推荐指数
1
解决办法
698
查看次数

Win32 API检查当前窗口是对话框还是普通窗口

我正在处理win32 api子类.我的问题是我不知道我的子类程序是在对话框还是"普通窗口"上运行.任何人都可以告诉我如何确定当前窗口是对话框还是普通窗口?

c c++ api winapi

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

Azure耐用功能如何恢复?

我正在查看Azure Durable Functions扩展(以及Durable Task框架repo)并查找它如何处理以下场景的技术细节.

想象一下以下的编排.

var result1 = await client.PostAsync("http://some-external-service.com/...", input);

var result2 = await context.CallActivityAsync<string>("Other Function","some data");

... do more stuff with result1 and result2
Run Code Online (Sandbox Code Playgroud)

想象一下,在Other Function完成后,在不是第一台的机器上恢复了该功能.如何在不执行第一个框架的情况下从第二个框架恢复框架?

实际上,在这种情况下,是否有可能多次执行HTTP调用?


我查看了Microsoft Bot Framework,它有一个类似的恢复策略,用于序列化和重新水化Dialog堆栈.(这强制编写的代码不涉及外部作用域,因此函数本身可以序列化.etc.)

我对.NET任务(或持久任务)中的核心功能感兴趣,它允许Task在不同的机器上序列化和恢复,而无需重新运行已经执行的部分(可能在不同的机器上).

c# azure task-parallel-library async-await azure-functions

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

获取应用播放音频的详细信息

我正在开发一个需要在设备重新启动后恢复音频播放的应用程序。

我发现仅仅发送媒体播放按钮可能不会启动用户正在使用的同一个应用程序。(我已经 Spotify 运行,但在重新启动后发送播放按钮打开谷歌音乐)

有没有办法获取有关应用程序播放媒体的详细信息(重新启动之前)?

我需要类似应用程序名称/活动名称/包名称等的东西。(所以我可以在发送播放按钮之前启动同一个应用程序)

media audio android

0
推荐指数
1
解决办法
1387
查看次数