我试图使用以下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 中重现这一点。
答案是什么锈病的`String`之间的区别`str`?描述了如何&str和String相互关系.
令人惊讶的是,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而不会破坏大量现有代码吗?
我正在使用复选框,并根据复选框选中或不跳过对话框.
以下代码为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)
一切正常.但默认情况下,复选框始终未选中.我想默认显示选中复选框.
我被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#中失败?我的哪些假设不好?
刚开始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绑定中使用的.任何想法如何开始这个没有用属性标记所有这样的视图模型属性?
不幸的是,只有那些属性使用的所有方法似乎都是死代码,所以这个查询也"泄漏"到模型的某些部分.
我是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) 好的,XAML非常简单,并使用MVVM绑定到ICommand SomeCommand { get; }视图模型上的属性:
<Button Command="{Binding Path=SomeCommand}">Something</Button>
Run Code Online (Sandbox Code Playgroud)
如果SomeCommand返回null,则启用该按钮.(与CanExecute(object param)方法无关ICommand,因为没有实例可以调用该方法)
现在的问题是:为什么启用按钮?你会怎么做?
如果按"启用"按钮,显然没有任何调用.按钮看起来很有用,这很丑陋.
我们在安装过程中使用 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 正在运行。
我们怎么能在那里写点别的东西,比如“我们现在在你的应用程序每次启动时为你节省了很多时间”?
我想限制可(反)序列化的结构具有也可反序列化的通用参数。派生宏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) 为什么在地球上有人会在枚举字符之前将字符串转换为char []?初始化在网络周围找到的System.Security.SecureString的常规模式如下:
SecureString secureString = new SecureString();
foreach (char c in "fizzbuzz".ToCharArray())
{
secureString.AppendChar(c);
}
Run Code Online (Sandbox Code Playgroud)
调用ToCharArray()对我来说毫无意义.有人能告诉我这里是不是错了吗?
我希望如果我将 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)
我查了一下两者的文档Option和Drop我找不到此行为的描述。我是否错过了一些编译器魔法,或者我不能在其他地方实现它,只是在 trait 声明或实现者定义中?
如何Option实现Drop以及为什么文档中缺少它?
c# ×4
mvvm ×3
rust ×3
wix ×2
wpf ×2
binding ×1
dart ×1
data-binding ×1
destructor ×1
enumeration ×1
equals ×1
generics ×1
ndepend ×1
ngen ×1
richtextbox ×1
securestring ×1
serde ×1
traits ×1