我正在使用ClickOnce部署C#.NET应用程序,我编写了代码以编程方式更新应用程序(不使用项目发布设置中的选项).
但是,我想在部署之前测试此代码的功能(出于显而易见的原因).我该怎么做呢?代码检查应用程序是否已部署网络,并且在运行调试会话时此标志为false.并且访问ApplicationDeployment.CurrentDeployment会导致抛出异常.
执行以下脚本时出现以下错误.什么是错误,以及如何解决?
Insert table(OperationID,OpDescription,FilterID)
values (20,'Hierachy Update',1)
Run Code Online (Sandbox Code Playgroud)
错误:
服务器:消息544,级别16,状态1,行1
当IDENTITY_INSERT设置为OFF时,无法在表'table'中为identity列插入显式值.
新手到Python,所以这看起来很傻.
我有两个词:
default = {'a': 'alpha', 'b': 'beta', 'g': 'Gamma'}
user = {'a': 'NewAlpha', 'b': None}
Run Code Online (Sandbox Code Playgroud)
我需要使用用户中存在的值更新我的默认值.但仅限于那些值不等于None的人.所以我需要找回一个新的词典:
result = {'a': 'NewAlpha', 'b': 'beta', 'g': 'Gamma'}
Run Code Online (Sandbox Code Playgroud) 我有几个Git分支:'实验','某事'和'主人'.
我切换到'实验'分支.我注意到一个与"实验"无关的错误,属于"某事"中的变化.我该如何解决?
我想我应该转向'某事',修复bug,提交然后再回到'实验'.我应该如何从'某些'中做出微小的改变并将其应用于'master'和'experimental',以便在切换到这些分支时我不必再次修复bug?
我很想知道堆栈和堆碰撞时会发生什么.如果有人遇到过这个,请他们解释一下这个场景.
提前致谢.
如果这是在一个函数中声明的,它会在堆栈中声明吗?(它是const是让我惊讶的原因)
void someFunction()
{
const unsigned int actions[8] =
{ e1,
e2,
etc...
};
}
Run Code Online (Sandbox Code Playgroud) 什么是从列表中返回字符串的最优雅的方法ok,是的,我知道我可以做类似的事情
public string Convert(List<int> something)
{
var s = new StringBuilder();
foreach(int i in something)
s.AppendFormat("{0} ", i);
return s.ToString();
}
Run Code Online (Sandbox Code Playgroud)
但我确定有一种方法可以用lambdas做到这一点我也尝试追加到一个字符串构建器,但这不是做什么预期
可能重复:
如何使用jQuery更改超链接的href
我有这个链接:
<a id="myLink_33" href="javascript:toggleMe(1);">Toggle</a>
Run Code Online (Sandbox Code Playgroud)
如何href使用Javascript/jquery 更改此链接的属性,以便链接变为:
<a id="myLink_33" href="javascript:toggleMe(0);">Toggle</a>
Run Code Online (Sandbox Code Playgroud) 我有一种情况,我有一个业务对象,有大约15种不同类型的属性.业务对象还必须实现具有以下方法的接口:
object GetFieldValue(string FieldName);
Run Code Online (Sandbox Code Playgroud)
我可以看到实现此方法的两种方法:
使用switch语句:
switch ( FieldName )
{
case "Field1": return this.Field1;
case "Field2": return this.Field2;
// etc.
}
Run Code Online (Sandbox Code Playgroud)
使用字典(SortedDictionary或HashTable?):
return this.AllFields[FieldName];
Run Code Online (Sandbox Code Playgroud)
哪个会更有效率?
补充:忘了说.此方法用于在网格中显示项目.网格将为每个属性都有一列.通常会有超过1000个项目的网格.这就是为什么我关注性能.
新增2:
这是一个想法:混合方法.创建一个静态字典,其中键是属性名称,值是数组中的索引.在应用程序启动时,字典仅填充一次.每个对象实例都有一个数组.所以,查找将是:
return this.ValueArray[StaticDictionary[FieldName]];
Run Code Online (Sandbox Code Playgroud)
字典填充算法可以使用反射.然后将相应地实现属性本身:
public bool Field1
{
get
{
object o = this.ValueArray[StaticDictionary["Field1"]];
return o == null ? false : (bool)o;
}
set
{
this.ValueArray[StaticDictionary["Field1"]] = value;
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以看到这个问题吗?
它也可以更进一步,ValueArray/StaticDictionary可以放在一个单独的泛型类型中ValueCollection<T>,其中T将指定反射的类型.ValueCollection还将处理尚未设置任何值的情况.然后可以将属性简单地写为:
public bool Field1
{
get
{
return (bool)this.Values["Field1"];
}
set
{
this.Values["Field1"] = value;
} …Run Code Online (Sandbox Code Playgroud) 我们刚刚进入WPF中的MVVM.
我们已经使用我们在视图中绑定的"强类型"属性(int,double?等)实现了我们的ViewModel.
大多数类型转换都可以正常工作,因此输入数据非常简单.但是我们遇到验证问题.
例如,如果在绑定到数字属性的文本框中输入非数字值,则转换失败,永远不会设置该属性,并且我们永远不会有机会向用户提供正确的反馈.更糟糕的是,该属性保留其当前值,导致视图中显示的内容与ViewModel中实际显示的内容不匹配.
我知道,所有这些都可以通过价值转换器来处理.但我已经看到了一些意见,认为转换不应该是视图的责任.在视图中输入的是字符串,转换,验证等应该是ViewModel的职责(所以参数是这样).
如果是这样,我们应该将ViewModel上的大多数属性重写为字符串,并通过IErrorInfo接口提供错误信息.它肯定会在视图中使更简单,更精简的XAML.另一方面,从View设计者的角度来看,转换,验证等将不那么具有说明性,明确性和灵活性.
在我们看来,这两种方法根本不同,所以在我们决定之前,我们希望在这个问题上有一些明智的SO意见.
那么:ViewModels是否应该向视图公开一个简化的"基于文本"的界面并在内部处理转换?或者ViewModel属性是否应该公开实际的数据类型,将这些杂项留给视图来处理?
更新:
很难在这里挑选一个胜利者,但我终于找到了一个或多或少像我一样的人.
具体来说,我们决定保持键入ViewModel属性.其主要原因是它在视图设计中提供了灵活性,并且在XAML中具有显式,声明性转换/格式化的强大功能.
我注意到一个假设,你会在这方面不同意我们,视图的设计是固定的和准备好的.因此,不需要在视图中做出关于转换,格式化等的决定.但是我们的过程是一个敏捷的过程,而且我们还没有预先知道用户界面的所有细节.
事实上,在此过程中留下UI的细节留下了创造空间,而且,在我看来,即使是精心设计的设计也总是会在整个实施过程中变形.
所有这一切的重点在于,虽然业务规则实施当然属于ViewModel,但在我们看来,简单的转换和格式化是一种观点.这可能听起来像异端,但我实际上并不认为视图中的类型转换根本不需要单元测试(所以我们对实际的类型转换器进行单元测试).
总而言之,这是一个很好的讨论,伙计们,有良好的表达,知情的意见.谢谢.
.net ×2
c# ×2
c++ ×2
stack ×2
branch ×1
c ×1
clickonce ×1
deployment ×1
dictionary ×1
git ×1
heap ×1
javascript ×1
jquery ×1
memory ×1
mvvm ×1
python ×1
sql ×1
sql-server ×1
sybase ×1
validation ×1
wpf ×1