小编And*_* K.的帖子

如何创建或使用现成的Shims从.net框架移植到.net core/standard?

如何为元素创建或使用现成的Shims.net framework 4.6.1将它们(从.net framework 4.6.1)移植到.net core 2.0/ .net standard 2.0


一些感兴趣的类:对于像以下类这样的类具有垫片会很好:

System.Windows.Threading.Dispatcher

要么

System.ComponentModel.ItemPropertyInfo.Descriptor

甚至

System.Windows.Controls.MenuItem

还有很多...


语境:

应用程序(代码)不是100%组织良好.业务逻辑与UI逻辑没有100%的分离.答案"先做重构"绝对是一个很好的答案.但就我而言,事情并非100%理想.


近似的例子,试图用手工做:

System.Windows.Threading.Dispatcher未实施Core 2.0.

人们可以尝试添加:

public enum DispatcherShimPriority
{
    Background
    //...
}

public interface DispaicherShim
{
    void Invoke(Action action, DispatcherShimPriority prio);
    void BeginInvoke(Action action, DispatcherShimPriority, prio);
}
Run Code Online (Sandbox Code Playgroud)

接下来是这个接口的两个实现:

public class DispatcherCore: DispaicherShim;
Run Code Online (Sandbox Code Playgroud)

public class DispatcherFramework: DispaicherShim;
Run Code Online (Sandbox Code Playgroud)

Shims在多目标项目中跟随aa类(让我们称之为):

public static DispaicherShim CreateDispatcher()
{
#if NETCOREAPP2_0
    return new DispatcherCore(); …
Run Code Online (Sandbox Code Playgroud)

.net c# porting shim .net-core

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

比较两个相同结构的任意JToken-s

提前致谢.我感谢任何帮助.

我想比较两个相同类型和结构的任意JTokens(来自NewtonSoft的Json.Net).

static int CompareTokens(JToken x, JToken y);  
// possible output: 0 / 1 / -1
Run Code Online (Sandbox Code Playgroud)

主要目标是能够使用此方法对两个Json字符串进行排序,这样即使在开始时它们具有相同的数据,但是以不同的顺序,最后这两个字符串完全相同.所以排序标准并不重要,重要的是这个标准总是一样的.并且应该考虑每个小数据元素.

JToken可以是以下几种类型之一:Array, Boolean, Date, Float, Guid, Integer, Null, Object, Property, String, TimeSpan, Uri.我不考虑比较Bytes, Comment, Constructor, None, Undefined, Raw.

  • 获得一些关于比较JArraysJObjects的想法会很棒.这应该是一些递归比较,因为JArrays可能包含其他JArraysJObject,反之亦然.任何想法将不胜感激.
  • 但是,了解比较更简单的类型也会非常有帮助.我想知道如何从JToken转换为实际类型(而不是知道如何逻辑地执行它).
  • JValue已实现IComparable,但我没有弄清楚如何将简单类型的JToken转换为JValue.了解这一点也会有所帮助.

这是一个很常见的问题.如果我弄明白该怎么做,我会给它加一个+100.抱歉我的英语.

c# json json.net

7
推荐指数
2
解决办法
3995
查看次数

DDD:Dto汇编器应该是域层的一部分吗?

提前致谢.

我在域层库中有一些聚合.此外,一些DTO位于单独的库中,在服务器客户端之间共享.

实体的聚合比其DTO更具信息量.因此,为了从DTO转换为Aggregate,Dto汇编程序应该访问存储库.存储库的接口位于域层中.这就是为什么我来的结论,即DtoAssembler应该成为其中的一部分DomainLayer.

这是正确的吗?

implementation domain-driven-design project-organization layer dto

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

WPF PRISM 6 DelegateComand ObservesCanExecute

提前致谢!

我应该如何在PRISM 6的DelegateCommand中使用ObservesCanExecute?

public partial class  UserAccountsViewModel: INotifyPropertyChanged
{
    public DelegateCommand InsertCommand { get; private set; }
    public DelegateCommand UpdateCommand { get; private set; }
    public DelegateCommand DeleteCommand { get; private set; }

    public UserAccount SelectedUserAccount
    {
        get;
        set
        {
            //notify property changed stuff
        }
    }

    public UserAccountsViewModel()
    {
        InitCommands();
    }

    private void InitCommands()
    {
        InsertCommand = new DelegateCommand(Insert, CanInsert);  
        UpdateCommand = new DelegateCommand(Update,CanUpdate).ObservesCanExecute(); // ???
        DeleteCommand = new DelegateCommand(Delete,CanDelete);
    }

    //----------------------------------------------------------

    private void Update()
    {
        //...
    }

    private bool …
Run Code Online (Sandbox Code Playgroud)

wpf prism delegatecommand

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

Nuget SQLite与Dapper一起使用而不加载Entity Framework依赖项

在我的c#应用程序中,我想将SQLiteDapper(on SqliteConnection)一起使用.

当前nuget System.Data.SQLite版本的问题是还加载了与EntityFramework相关的依赖项,但它们不是必需的.

c# sqlite system.data.sqlite nuget-package dapper

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

条件编译常量在 .net 核心多目标 sdk 样式项目中不起作用

以下是最初定义条件编译常量的方式(注意多目标):

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;netcoreapp2.0;net461</TargetFrameworks>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.0' OR '$(TargetFramework)' == 'netstandard2.0'">
    <DefineConstants>NETCORE;</DefineConstants>
  </PropertyGroup>

  <PropertyGroup Condition=" '$(TargetFramework)' == 'net461'">
    <DefineConstants>NETFULL;</DefineConstants>
  </PropertyGroup>
  ...

</Project>
Run Code Online (Sandbox Code Playgroud)

当时NETCORE常量工作正常。

#if NETCORE
    // Works Fine! Not gray in VS; Compiler recognizes code!
    public string Abc { get; set; }   
#endif
Run Code Online (Sandbox Code Playgroud)

我正在处理我的代码,但当时我的程序集没有编译。


之后,我添加了额外的条件编译常量(不编辑以前的 -NETFULLNETCORE):

<PropertyGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.0'">
    <DefineConstants>NETCOREONLY;</DefineConstants>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

整体代码(程序集)仍未编译。

并删除了NETCOREONLY不需要的附加项,只留下以前的(NETCORENETFULL)。

整体代码(程序集)仍未编译。

问题是它NETCORE不再像以前那样工作了。

我正在切换到netcoreapp2.0平台,但代码

#if NETCORE …
Run Code Online (Sandbox Code Playgroud)

conditional-compilation csproj multitargeting visual-studio .net-core

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