我正在开发一个.Net类库(一个数据提供者),我开始考虑如何处理向潜在购买者授权库.通过许可,我的意思是试图阻止我的库被那些没有购买它的人使用的机制,而不是软件许可证(即Apache,Gnu等).
我从未处理许可,过去,我一直在开发应用程序,而不是库.我不想让我的顾客感到困难; 知道不可能让它变得铁定.只是一些机制,给了我体面的保护,而不是让客户跳过篮球或咬牙切齿.
我认为该机制将在开发模式下使用类时检查有效许可,而不是在运行时模式(当客户的软件发布给客户时).我认为图书馆通常是按开发人员销售的,但我不确定如何在不使我的客户机制恶化的情况下实现这一目标; 也许这留给了荣誉系统.
我用Google搜索并找到了很多方法.理想情况下,我想做一些普遍接受和普遍的事情,"正确"的方式类库被许可,如果存在,而不是让我的客户处理另一种许可机制.坚定不移地向正确的方向发展将非常感激!
我试图确定给定文化的货币符号是否应出现在值的开头或结尾.我无法在.Net CultureInfo中找到这些信息,所以我想我会尝试黑客攻击:
var cultures = new[] {"en-US", "ar-SA", "as-IN", "tr-TR"};
foreach ( var culture in cultures ) {
var cultureInfo = CultureInfo.CreateSpecificCulture( culture );
var currencyValue = 1.234.ToString( "C", cultureInfo );
var rtl = cultureInfo.TextInfo.IsRightToLeft;
var symbolAtBeginning = currencyValue.StartsWith( cultureInfo.NumberFormat.CurrencySymbol, false, cultureInfo );
}
Run Code Online (Sandbox Code Playgroud)
唉,这个方法有时候起作用; 在上面的例子中,它适用于"en-US",但不适用于其他文化.起初我认为这是因为有些文化从右到左阅读文本,而"开始"将是右侧,但这种解释并未证明.
有没有人看到我的代码中的缺陷,或者最好有一个更好的方法来确定货币符号位置?
我在Wix帮助或在线上找不到关于此代码的作用的解释:
<Binary Id="WixUI_Bmp_Dialog" SourceFile="!(wix.WixUIDialogBmp=$(var.dialogBmp))" />
Run Code Online (Sandbox Code Playgroud)
具体来说,SourceFile属性的评估值是多少?
我可以看到wix.WixUIDialogBmp取消引用该名称的WixVariable.
我可以看到$(var.dialogBmp)取消引用已定义的预处理器变量.
但我不明白将一个分配给另一个,或"!()"符号.
正如我理解这个代码的运行方式,它可能是一个空的合并表达式,因为WixVariable不一定在代码中定义,而另一个变量是一个常量并且始终定义.但我无法在Wix中找到关于空合并表达式的任何内容.
我是async/await的新手,并且正在修改它以使用任务列表对对象列表执行操作.我使用Linq生成对象列表和任务列表.下面的示例看起来有点人为,但它是我实际代码的简化版本.
我发现当代码如图所示执行时,在所有任务完成之后(等待之后),对象的Now属性都没有更新,并且所有任务的状态仍为Running.
我发现通过.ToList <>()将对象和任务转换为实际列表来消除Linq延迟执行,我的代码按预期工作(填充对象,任务全部运行完成).
我熟悉Linq延迟执行,但我真的很困惑这个代码中发生了什么(不是).我可能在async/await中犯了一个noob错误......它是什么?
private class Foo {
public DateTime Now { get; set; }
}
private void Button_Click( object sender, EventArgs e ) {
PopulateDates();
}
private async void PopulateDates() {
var ordinals = new List<int>() { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, };
var foos = ordinals.Select( o => new Foo() ); //.ToList();
var tasks = foos.Select( f => PopulateDateAsync( f ) ); //.ToList();
await Task.WhenAll( tasks );
var firstNow = foos.ElementAt( 0 …Run Code Online (Sandbox Code Playgroud) c# ×3
.net ×1
async-await ×1
currency ×1
license-key ×1
licensing ×1
linq ×1
localization ×1
wix ×1