如何检查我的C#Windows应用程序是否正在运行?
我知道我可以检查进程名称,但如果exe更改,则可以更改名称.
有没有办法让哈希键或其他东西使我的应用程序独一无二?
如果我有以下代码:
public class MyClass
{
public string myName { get; private set; }
public string myId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
为setter创建一个私有编译器生成的变量.我希望只有对象初始化才能访问setter.但是,如何初始设置myName变量?
阅读对象初始化我发现以下内容:
...它是只读的,表示底层存储的私有字段有一个编译器生成的名称,我们不能在构造函数中使用它来分配它.解决方案是使用对象初始化器
那么,解决方案是使用:
MyClass mc = new MyClass {
myName = "What ever",
myId = "1234"
};
Run Code Online (Sandbox Code Playgroud)
但这最终会导致编译器错误:
属性或索引器'MyClass.MyClass.myName'不能在此上下文中使用,因为set访问器不可访问
那么,有没有办法使用对象初始化来设置此值?如果有,做正确的方法是什么?
在C#中我可以写:
if(Debugger.IsAttached)
Debugger.Break();
Run Code Online (Sandbox Code Playgroud)
当程序未被调试时,这不起作用.附加调试器时,它的行为类似于永远不能关闭的断点.如何在Android上实现类似的效果?
或许我根本不应该关注断点.我真正想要的是在常规使用中没有任何后果(将向用户显示一般的错误消息),但是当开发人员开始查看它时,错误的来源变得明显.我已经尝试过assert,但它是一个子项目,它被编译为大部分时间都能释放味道,我不能依赖有人记得将它切换到调试.
我有一个模块:
single{ (name: String) -> Person(name) }
Run Code Online (Sandbox Code Playgroud)
当我做:
val alice: Person by inject {parametersOf("Alice")}
val bob: Person by inject {parametersOf("Bob")}
Run Code Online (Sandbox Code Playgroud)
我得到了 2 个 Alice 实例。除第一个参数之外的所有参数都将被忽略。
有没有一种简单的方法可以让 Koin 将这两者视为不同的?参数事先不知道,因此我无法使用命名属性。factory
也不会这样做,我需要重用具有相同参数集的实例。