小编wig*_*igy的帖子

从 dartanalyzer 中排除所有生成的代码

我试图使用以下analysis_options.yaml文件从包中排除所有生成的文件。

include: package:pedantic/analysis_options.yaml
analyzer:
    strong-mode:
        implicit-casts: false
        implicit-dynamic: false
    exclude:
        - lib/**.g.dart
Run Code Online (Sandbox Code Playgroud)

lib/store/state/presentations_state.g.dart我仍然收到名为“违反规则”的文件的错误implicit_dynamic_parameter。如果我排除**.g.dart没有lib/前缀,dartanalyzer则可以正常工作,但dart-code.dart-codeVS Code 插件会Undefined alias. dart(parse_error)在 YAML 文件第一行的某个位置报告,从而使整个项目标记为有错误。

我也可以在具有多个包和单个包的 monorepos 中重现这一点。

static-analysis dart visual-studio-code

18
推荐指数
2
解决办法
4445
查看次数

为什么固定大小的数组可以在堆栈上,但str不能?

答案是什么锈病的`String`之间的区别`str`?描述了如何&strString相互关系.

令人惊讶的是,a str比固定大小的数组更有限,因为它不能被声明为局部变量.编译

let arr_owned = [0u8; 32];
let arr_slice = &arr_owned;

let str_slice = "apple";
let str_owned = *str_slice;
Run Code Online (Sandbox Code Playgroud)

在Rust 1.32.0中,我明白了

error[E0277]: the size for values of type `str` cannot be known at compilation time
 --> src/lib.rs:6:9
Run Code Online (Sandbox Code Playgroud)

这是令人困惑的,因为"apple"编译器可以知道它的大小,它只是不属于str类型的一部分.

是否存在Vec<T>< - > [T; N]String< - > str所拥有类型之间不对称的语言原因?一个str[N]类型,它是一个简短的[u8; N]只包含可证明有效的UTF-8编码字符串,可以替换str而不会破坏大量现有代码吗?

language-lawyer rust

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

如何在Wix中默认选中复选框

我正在使用复选框,并根据复选框选中或不跳过对话框.

以下代码为Checkbox

<Control Id="CheckBox_Samples" Type="CheckBox" X="172" Y="225" Width="274" Height="26" Property="INSTALLSAMPLES" Text="Install Samples" CheckBoxValue="TRUE" TabSkip="no" />
Run Code Online (Sandbox Code Playgroud)

以下代码跳过对话框.

<Control Id="Next" Type="PushButton" X="372" Y="348" Width="56" Height="17" Text="[ButtonText_Next]" Default="yes">
  <Publish Event="SetTargetPath" Value="APPDIR">INSTALL</Publish>
  <Publish Event="NewDialog" Value="NewDialog_1">INSTALL AND INSTALLSAMPLES</Publish>
  <Publish Event="NewDialog" Value="SetupTypeDlg">INSTALL AND (NOT INSTALLSAMPLES)</Publish>
</Control>
Run Code Online (Sandbox Code Playgroud)

一切正常.但默认情况下,复选框始终未选中.我想默认显示选中复选框.

wix

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

Object.Equals是虚拟的,但Object.operator ==不在C#中使用它?

我被C#中一个奇怪的"不对称"所打击,我真的不明白.请参阅以下代码:

using System;
using System.Diagnostics;
namespace EqualsExperiment
{
    class Program
    {
        static void Main(string[] args)
        {
            object apple = "apple";
            object orange = string.Format("{0}{1}", "ap", "ple");
            Console.WriteLine("1");
            Debug.Assert(apple.Equals(orange));
            Console.WriteLine("2");
            Debug.Assert(apple == orange);
            Console.WriteLine("3");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

对于所有的.NET大师来说,这可能是显而易见的,但第二个断言失败了.

在Java中,我了解到==是这里名为Object.ReferenceEquals的同义词.在C#中,我认为Object.operator ==使用Object.Equals,它是虚拟的,因此它在System.String类中被覆盖.

有人可以解释,为什么第二个断言在C#中失败?我的哪些假设不好?

c# equals referenceequals equals-operator

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

如何更改"潜在死方法"CQLinq在WPF MVVM项目中有用

刚开始NDepend一个WPF项目.更改了"潜在死类型"内置查询以包含我们的System.Windows.Application派生类而不是名为Program的类:

// <Name>Potentially dead Types</Name>
warnif count > 0
let canTypeBeConsideredAsDeadProc = new Func<IType, bool>(
   t => !t.IsPublic &&
        (t.BaseClass == null || t.BaseClass.FullName != "System.Windows.Application") && 
        !t.IsGeneratedByCompiler && ...
Run Code Online (Sandbox Code Playgroud)

解决这些问题后,我仍然需要处理NDepend发现的许多死方法,这些方法实际上是在WPF绑定中使用的.任何想法如何开始这个没有用属性标记所有这样的视图模型属性?

不幸的是,只有那些属性使用的所有方法似乎都是死代码,所以这个查询也"泄漏"到模型的某些部分.

data-binding ndepend mvvm

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

在可绑定的RichTexBox mvvm wpf中加载rtf

我是mvvm的新手,我想使用mvvm在RichTextBox中加载一个rtf文件,但文本似乎没有显示在我的richtextbox中.在尝试将命令放入ViewModel时,看起来RichTextBox非常复杂.我不确定我哪里出错了.

视图模型

 FlowDocument _script;
 public FlowDocument Script 
    {
        get { return _script; }
        set { _script = value; RaisePropertyChanged("Script"); }
    }
.
.
.
 private void LoadScript()
    {
        openFile.InitialDirectory = "C:\\";

        if (openFile.ShowDialog() == true)
        {
            string originalfilename = System.IO.Path.GetFullPath(openFile.FileName);

            if (openFile.CheckFileExists)
            {
                Script = new FlowDocument();
                TextRange range = new TextRange(Script.ContentStart, Script.ContentEnd);
                FileStream fStream = new FileStream(originalfilename, System.IO.FileMode.OpenOrCreate);
                range.Load(fStream, DataFormats.Rtf);
                fStream.Close();
            }  
         }
    }
Run Code Online (Sandbox Code Playgroud)

风景

DataContext="{Binding ScriptBreakdownViewModel, Source={StaticResource Locator}}">

<Grid>
    <RichTextBox
        Local:RichTextBoxHelper.DocumentRtf="{Binding Script}"
        x:Name="rtfMain"
        HorizontalAlignment="Left"
        Width="673"
        VerticalScrollBarVisibility="Visible"
        Margin="0,59,0,10.4"
        /> …
Run Code Online (Sandbox Code Playgroud)

c# wpf binding richtextbox mvvm

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

如果Command绑定解析为null,为什么启用了按钮?

好的,XAML非常简单,并使用MVVM绑定到ICommand SomeCommand { get; }视图模型上的属性:

<Button Command="{Binding Path=SomeCommand}">Something</Button>
Run Code Online (Sandbox Code Playgroud)

如果SomeCommand返回null,则启用该按钮.(与CanExecute(object param)方法无关ICommand,因为没有实例可以调用该方法)

现在的问题是:为什么启用按钮?你会怎么做?

如果按"启用"按钮,显然没有任何调用.按钮看起来很有用,这很丑陋.

c# wpf mvvm

4
推荐指数
3
解决办法
1394
查看次数

如何更改 NGen 在 WiX MSI 包中运行时显示的文本

我们在安装过程中使用 NGen 来优化应用程序的启动时间。

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
     xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
  ...
  <File Id="File.$(var.ProjectName.TargetName).exe" Source="$(var.ProjectName.TargetPath)" KeyPath="yes">
    <netfx:NativeImage Id="ngen.File.$(var.ProjectName.TargetName)" Platform="$(var.NgenPlatform)" Priority="0" AppBaseDirectory="INSTALLLOCATION"/>
  </File>
  ...
</Wix>
Run Code Online (Sandbox Code Playgroud)

在安装生成的 MSI 时,与其他步骤相比,“删除备份文件”步骤花费了非常长的时间。深入研究,我们发现当时 NGen 正在运行。

我们怎么能在那里写点别的东西,比如“我们现在在你的应用程序每次启动时为你节省了很多时间”?

wix ngen

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

限制 Rust 结构体的泛型参数进行反序列化

我想限制可(反)序列化的结构具有也可反序列化的通用参数。派生宏Deserialize不需要我添加此约束,这很好,但我希望集成代码能够获得编译错误,即使它们从未尝试反序列化库中定义的结构。

use failure::Fallible; // 0.1.6
use serde::{Deserialize, Serialize}; // 1.0.104
use serde_json::to_string_pretty; // 1.0.44

#[derive(Deserialize, Serialize)]
struct X<T>
where
    // T: Serialize,
{
    a: u8,
    t: T,
}

type Main<'a> = &'a dyn Fn() -> Fallible<()>;

fn main() -> Fallible<()> {
    let x = X { a: 1, t: false };
    println!("{}", to_string_pretty(&x)?);

    let y: X<bool> = serde_json::from_str(r#"{"a":2,"t":true}"#)?;
    println!("{}", y.t);

    let _z: X<Main> = X { a: 3, t: &main };
    // println!("{}", to_string_pretty(&z)?);

    //let w: X<Main> = …
Run Code Online (Sandbox Code Playgroud)

generics rust serde

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

是枚举所需的string.ToCharArray()吗?

为什么在地球上有人会在枚举字符之前将字符串转换为char []?初始化在网络周围找到的System.Security.SecureString的常规模式如下:

SecureString secureString = new SecureString();
foreach (char c in "fizzbuzz".ToCharArray())
{
    secureString.AppendChar(c);
}
Run Code Online (Sandbox Code Playgroud)

调用ToCharArray()对我来说毫无意义.有人能告诉我这里是不是错了吗?

c# enumeration securestring

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

哪里记录了 Option&lt;T&gt; 是 Drop?

我希望如果我将 a 包装Box<T>成 an Option, drop 就可以完成它的工作。而这个程序确实输出了“dropped”:

trait Foo {}

struct Bar {}

impl Foo for Bar {}

impl Drop for Bar {
    fn drop(&mut self) {
        println!("dropped")
    }
}

fn main() {
    let x = Box::new( Bar {} ) as Box<Foo>;
    let _y = Option::Some(x);
}
Run Code Online (Sandbox Code Playgroud)

操场

我查了一下两者的文档OptionDrop我找不到此行为的描述。我是否错过了一些编译器魔法,或者我不能在其他地方实现它,只是在 trait 声明或实现者定义中?

如何Option实现Drop以及为什么文档中缺少它?

destructor traits rust

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