我在项目的根目录中有"license.txt"文件.在jar-task中,我想将此文件添加到JAR文件的(根文件夹)中.
我试过了
jar {
from '.' include 'license.txt'
}
Run Code Online (Sandbox Code Playgroud)
但这会替换其他内容(.class文件)而不是添加文件.我不想将license.txt添加到resources文件夹,因为我不想仅仅因为构建工具而改变我的项目结构.
谁可以帮忙?谢谢!
record使用with关键字创建 C# 9 的新实例时,我想忽略某些字段,而不是将它们也复制到新实例中。
在以下示例中,我有一个Hash属性。因为它在计算上非常昂贵,所以它只在需要时才计算然后缓存(我有一个非常不可变的记录,所以对于一个实例,哈希永远不会改变)。
public record MyRecord {
// All truely immutable properties
public int ThisAndManyMoreComplicatedProperties { get; init; }
// ...
// Compute only when required, but then cache it
public string Hash {
get {
if (hash == null)
hash = ComputeHash();
return hash;
}
}
private string? hash = null;
}
Run Code Online (Sandbox Code Playgroud)
打电话时
MyRecord myRecord = ...;
var changedRecord = myRecord with { AnyProp = ... };
Run Code Online (Sandbox Code Playgroud)
changedRecord包含hash值 from …
dotnet publish -r win10-x64我的 .NET Core 3.0 应用程序是使用命令或dotnet publish -r ubuntu.18.04-x64例如针对不同操作系统发布的。
在运行时,在我的 C# 代码中,我想找出应用程序构建的目标。我指的不仅仅是一般操作系统,如 Windows 或 Linux(如此处所问),而是确切的运行时目标,如ubuntu-18.04-x64.
我已经发现,有一个文件<AssemblyName>.deps.json。它包含属性"runtimeTarget": { "name": ".NETCoreApp,Version=v3.0/ubuntu.18.04-x64", ...,但也许有更好的方法?
测试新的 C# 9 记录,并希望澄清为什么序列相等在记录上不起作用?
假设我有以下代码:
public record Person(string FirstName, string LastName);
Run Code Online (Sandbox Code Playgroud)
以下代码将返回 true 表示相等(这里没什么奇怪的):
var first = new Person("Bruce", "Wayne");
var second = new Person("Bruce", "Wayne");
var result = first == second; // Returns true
Run Code Online (Sandbox Code Playgroud)
但是,如果我创建以下记录:
public record Basket(string[] Items);
Run Code Online (Sandbox Code Playgroud)
我做了一个类似的测试:
var first = new Basket(new[] { "Banana", "Apple" });
var second = new Basket(new[] { "Banana", "Apple" });
var result = first == second;
Run Code Online (Sandbox Code Playgroud)
结果将返回 false。这可以通过定义自己的 Equals 方法来解决:
public record Basket(string[] Items)
{
public virtual bool Equals(Basket other)
{ …Run Code Online (Sandbox Code Playgroud) C#8支持接口中的默认方法实现。我的想法是将一个日志记录方法注入这样的类中:
public interface ILoggable {
void Log(string message) => DoSomethingWith(message);
}
public class MyClass : ILoggable {
void MyMethod() {
Log("Using injected logging"); // COMPILER ERROR
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一个编译器错误:“名称在当前上下文中不存在”
以这种方式使用默认方法实现是不可能的吗?
编辑:
Swing 的 JFileChooser 提供了setAccessory方法来扩展任何 Swing 组件的文件选择器,例如用于文件预览或选择选项。
JavaFX 的FileChooser和DirectoryChooser 中是否有类似的可能性?
编辑:似乎是Firestore中的一个开放问题.另见这篇文章.
在Google Cloud Firestore中,我想为groups 的集合建模.每个组包含一个name,它的列表user和一些secretGroupData.对我来说,这样做的自然方式是:
/groups
/group1 {
name: "Group 1"
users: { //object can be queried, simple array not
"user1": true,
"user5": true
}
secretGroupData: ...
}
/group2 { ... }
Run Code Online (Sandbox Code Playgroud)
鉴于用户喜欢user1,我想查询他所属的所有群组.此查询工作正常:
groupsRef.where("users.user1", "==", true)
Run Code Online (Sandbox Code Playgroud)
但是,我想保护组数据.只有所有用户都可以读取所有组时,此查询才有效.当我通过规则保护组只能由组成员可读时
match /groups/{groupId} {
allow read: if resource.data.users[request.auth.uid] == true;
}
Run Code Online (Sandbox Code Playgroud)
上述查询不再起作用,因为只要它看到当前用户不是其成员的组,就会拒绝读访问,并且整个查询都会失败.
Firestore中此问题的最佳解决方案是什么?我是不是该
groups并忽略其他的,而不是抛出错误?如果是这样,我怎么能做到这一点?group所有users 的s可读并移入secretGroupData子集合,然后我可以限制对组成员的访问/users/user1/groupIds: ["group1"])中来添加冗余,因此我事先知道这些组并可以通过ID查询它们 …到目前为止,有关离子警报的Ionic 4文档包含一个示例如何向警报添加文本输入,例如:
const alert = await this.alertController.create({
inputs: [
{
name: 'name1',
type: 'text'
},
Run Code Online (Sandbox Code Playgroud)
但是我找不到如何从name1文本输入中访问值的方法,例如在按钮处理程序中。
我是否必须使用类似的东西,document.getElementById还是有其他的离子/角度样式方式?
我想知道如何在带有可为空引用类型的C# 中使用后期初始化的类字段。想象一下下面的类:
public class PdfCreator {
private PdfDoc doc;
public void Create(FileInfo outputFile) {
doc = new PdfWriter(outputFile);
Start();
}
public void Create(MemoryStream stream) {
doc = new PdfWriter(stream);
Start();
}
private void Start() {
Method1();
// ...
MethodN();
}
private void Method1() {
// Work with doc
}
// ...
private void MethodN() {
// Work with doc
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码非常简化。我真正的班级使用了更多的领域,比如doc,还有一些带有一些参数的构造函数。
使用上面的代码,我在构造函数上收到编译器警告,doc未初始化,这是正确的。我可以通过设置docto的类型来解决这个问题PdfDoc?,但是我必须使用?.或!.任何它的地方,这很糟糕。
我也可以 …