如何为元素创建或使用现成的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) 提前致谢.我感谢任何帮助.
我想比较两个相同类型和结构的任意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.
这是一个很常见的问题.如果我弄明白该怎么做,我会给它加一个+100.抱歉我的英语.
提前致谢.
我在域层库中有一些聚合.此外,一些DTO位于单独的库中,在服务器端和客户端之间共享.
实体的聚合比其DTO更具信息量.因此,为了从DTO转换为Aggregate,Dto汇编程序应该访问存储库.存储库的接口位于域层中.这就是为什么我来的结论,即DtoAssembler应该成为其中的一部分DomainLayer.
这是正确的吗?
implementation domain-driven-design project-organization layer dto
提前致谢!
我应该如何在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) 在我的c#应用程序中,我想将SQLite 与Dapper(on SqliteConnection)一起使用.
当前nuget System.Data.SQLite版本的问题是还加载了与EntityFramework相关的依赖项,但它们不是必需的.
以下是最初定义条件编译常量的方式(注意多目标):
<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)
我正在处理我的代码,但当时我的程序集没有编译。
之后,我添加了额外的条件编译常量(不编辑以前的 -NETFULL和NETCORE):
<PropertyGroup Condition=" '$(TargetFramework)' == 'netcoreapp2.0'">
<DefineConstants>NETCOREONLY;</DefineConstants>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
整体代码(程序集)仍未编译。
并删除了NETCOREONLY不需要的附加项,只留下以前的(NETCORE和NETFULL)。
整体代码(程序集)仍未编译。
问题是它NETCORE不再像以前那样工作了。
我正在切换到netcoreapp2.0平台,但代码
#if NETCORE …Run Code Online (Sandbox Code Playgroud) conditional-compilation csproj multitargeting visual-studio .net-core