小编Hap*_*mad的帖子

由于其许可证存在问题,此应用程序无法启动

我很高兴在编码的中间,然后我尝试在调试模式下启动我的应用程序,但我收到此错误消息.

无法激活Windows应用商店应用

由于其许可证存在问题,此应用程序无法启动

该应用程序在几分钟前推出正常,所以这是一个惊喜.我尝试重新启动Visual Studio,但这样做没有帮助.

我想,昨天我得到了令人讨厌的"更新你的开发者许可证"对话框.它没有问题地更新了.

如何使此错误消息消失,以便我可以调试我的应用程序?

visual-studio-2012 windows-store-apps

30
推荐指数
3
解决办法
7496
查看次数

类型列表的附加属性

我想创建一个可以使用此语法的附加属性:

<Button>
  <Image .../>
  <ui:ToolbarItem.DisplayFilter>
    <TabItem .../>
    <TabItem .../>
    <TabItem .../>
  </ui:ToolbarItem.DisplayFilter>
</Button> 
Run Code Online (Sandbox Code Playgroud)

这是我尝试这样做的:

public class ToolbarItem
{
  /// <summary>
  /// Identifies the DisplayFilter attached property. 
  /// </summary>
  public static readonly DependencyProperty DisplayFilterProperty =
    DependencyProperty.RegisterAttached(
     "DisplayFilter",
     typeof( IList ),
     typeof( ToolbarItem )
    );

  public static IList GetDisplayFilter( Control item ) {
    return (IList)item.GetValue( DisplayFilterProperty );
  }

  public static void SetDisplayFilter( Control item, IList value ) {
    item.SetValue( DisplayFilterProperty, value );
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,这会在分析时导致异常 - System.ArgumentException:TabItem不是属性'DisplayFilter'的有效值.那么如何配置我的附加属性以便我可以使用所需的XAML语法?

wpf attached-properties

19
推荐指数
1
解决办法
7475
查看次数

基于另一个布尔值否定布尔值

什么是简短,优雅,按位的方式来编写这个C#代码的最后一行而不写b两次:

bool getAsIs = ....
bool b = ....

getAsIs ? b : !b
Run Code Online (Sandbox Code Playgroud)

c# bit-manipulation

15
推荐指数
2
解决办法
3189
查看次数

何时使用LINQ的.ToList()或.ToArray()

运行此代码后:

var input = new List<T>( ... );
var result = input.Select( t => new U(t) );

U first1 = null;
foreach ( U u1 in result )
    if ( first1 == null )
        first1 = u1;

U first2 = null;
foreach ( U u2 in result )
    if ( first2 == null )
        first2 = u2;
Run Code Online (Sandbox Code Playgroud)

然后'first1 == first2'评估为false,即使两个U都包含相同的T.我还没有测试它,但我认为可以通过链接.ToList()或.ToArray()来评估为true进入Select()调用.

在比这个简单的插图复杂得多的实际代码中,用于决定是否应该附加.ToList()或.ToArray()的好经验法则是什么?我最初的想法是要么可以多次迭代的任何引用表达式,要么在潜在迭代不明显的情况下更安全,任何引用的表达式,其结果永远不会改变.

c# linq deferred-execution .net-4.5

13
推荐指数
1
解决办法
1万
查看次数

急切加载递归关系

我有一个递归的一对多关系,其默认延迟值为true.如果我在SubCategories映射上有lazy ="false",我可以用NH API编写哪些代码来有效地检索整个树?

这是递归的一对多关系:

<class name="Category" lazy="false">
    ...
    <list name="SubCategories" fetch="subselect">
            <key column="ParentCategoryID"/>
            <index column="PositionInList"/>
            <one-to-many class="Category"/>
    </list>
Run Code Online (Sandbox Code Playgroud)

我没有在列表中指定lazy ="false",因为在我需要运行的大约一半查询中需要懒惰.我在列表上有fetch ="subselect"作为我管理检索整个树时的优化.

我已经尝试过ICriteria API:

session.CreateCriteria<Category>().SetFetchMode( "SubCategories", FetchMode.Eager ).Add( Restrictions.IsNull("ParentCategory") ).SetResultTransformer( CriteriaSpecification.DistinctRootEntity ).List<Category>();
Run Code Online (Sandbox Code Playgroud)

但这只是急切地加载了层次结构中的第一级.

nhibernate

7
推荐指数
1
解决办法
2580
查看次数

聚合值直到达到限制

我需要类似于AggregateWhile方法的东西。标准System.Linq.Enumerable类不提供它。到现在为止,我一直能够利用标准的 LINQ 方法来解决我遇到的每个问题。所以我想知道在这种情况下这是否仍然可行,或者我是否真的需要使用非标准方法扩展 LINQ。

假设的AggregateWhile方法将迭代一个序列并应用累加器。一旦谓词返回false,聚合就会完成。结果是元素的聚合,直到但包括谓词失败的元素。

这是一个例子。我们有一个List { 1, 2, 3, 4, 5 }带累加器的累加器,它将两个输入数字相加,以及一个声明累加必须小于 12 的谓词。 AggregateWhile将返回 10,因为这是 1 + 2 + 3 + 4 的结果,并且添加最后的 5 将推动总量超限。在代码中:

var list = new List<int> { 1, 2, 3, 4, 5 };
int total = list.AggregateWhile( (x, y) => x + y, a => a < 12 ); // returns 10
Run Code Online (Sandbox Code Playgroud)

我需要一个纯函数式解决方案,因此关闭临时变量不是一种选择。

c# linq linq-to-objects

6
推荐指数
1
解决办法
2133
查看次数

抛出表达式不适用于布尔表达式?

投掷表达式适用于这种情况:

string myStr;

public MyObj( string myStr ) =>
    this.myStr = myStr ?? throw new ArgumentNullException( "myStr" );
Run Code Online (Sandbox Code Playgroud)

但为什么不编译呢?

bool isRunning;

public void Run() =>
    isRunning = !isRunning || throw new InvalidOperationException( "Already running" );
Run Code Online (Sandbox Code Playgroud)

c# throw c#-7.0

6
推荐指数
1
解决办法
148
查看次数

如何降低WCF命名管道的完整性

我有一个用C#编写的Internet Explorer加载项,它通过WCF命名管道与.NET桌面应用程序进行通信.桌面应用程序为netNamedPipeBinding创建ServiceHost,IE加载项的每个实例都创建一个ChannelFactory以与应用程序通信.在Windows XP下一切正常,但在Windows 7的IE保护模式下会抛出异常.

System.ServiceModel.CommunicationException:无法连接到端点'net.pipe://localhost/MyApp.MyID'.---> System.IO.PipeException:'\.\ pipe ... guid ...'存在管道端点,但连接失败:访问被拒绝.(5,0x5)

在受保护模式下运行加载项是我必须支持的方案.我的理解是,如果我降低命名管道的完整性级别,那么我的IE加载项将被允许通过它进行通信.我的问题是如何做到这一点.我有设置使用WCF的东西,并且最好是保持这种方式.我可以让WCF创建具有较低完整性级别的命名管道吗?我写了什么代码来实现这一目标?

c# wcf bho named-pipes protected-mode

5
推荐指数
1
解决办法
2106
查看次数

从构造函数创建委托

使用反射,我试图从无参数构造函数创建一个委托,如下所示:

Delegate del = GetMethodInfo( () => System.Activator.CreateInstance( type ) ).CreateDelegate( delType );

static MethodInfo GetMethodInfo( Expression<Func<object>> func )
{
    return ((MethodCallExpression)func.Body).Method;
}
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个例外:"无法绑定到目标方法,因为它的签名或安全透明性与委托类型的不兼容." 什么会奏效?

请注意,自上一版本的.NET以来,至少为此配置文件移动了CreateDelegate.现在它在MethodInfo上.

c# reflection expression-trees .net-4.5

5
推荐指数
2
解决办法
4840
查看次数

Rx如何与反应式编程相关?

我已经读过反应式编程的基本思想,即基于源值表达式随时间变化的变量.我甚至使用表达式实现了这一点.但后来我看看微软的Reactive Extensions(Rx)并看到完全不同的东西.随着时间的推移,自我更新的变量在哪里?没有人看到.只是通过事件参数枚举的一些奇特方式.

所以我的问题是:Rx真的是"反应性"的吗?我们现在看到的功能现在是未来的前奏吗?或者是微软不小心抛出一个流行词?或者我完全忽略了这一点(在这种情况下,我希望你解释一下)?

编辑: 我已经得到了一些很好的答案与Rx的描述,此外问题被关闭.:(但我仍然希望听到更多的:

  1. 在什么意义上Rx"反应"?我认为自我更新变量是这个想法的核心,但Rx不提供这些.LINQ-to-Events似乎是Rx更好的名字.我开始认为,也许微软滥用"反应"一词将其应用于Rx.
  2. 当前的Rx功能可能以何种方式成为自我更新变量的前身?我实现了这样的功能,并没有注意到Rx为此目的有用的东西.

.net reactive-programming system.reactive

5
推荐指数
2
解决办法
822
查看次数