小编lys*_*cid的帖子

使用单个通用命令处理多个按钮

我正在构建一个简单的Calculator应用程序.我也在学习如何在我的应用程序中应用MVVM模式.

我希望我的计算器中的每个"数字"按钮都绑定到同一个命令,它们只会在引发命令的按钮的数字(文本)上有所不同.

例如,当单击按钮"1"时,我希望收到有关它的通知,从发件人的属性中提取"1",并继续所需的其余工作.

这允许我定义一个方法而不是10个不同的处理程序.

到目前为止,我在所有MVVM教程中看到的都是不可能的,因为在绑定到将处理点击的实际方法时,Command绑定不会向我提供所有这些信息.

有没有办法轻松做我需要的?

.net c# wpf binding mvvm

3
推荐指数
1
解决办法
2697
查看次数

访问类受保护的字段而不修改原始类

我正在使用一些暴露某种类型的第三方库(由方法返回).

这种类型有一些我感兴趣的受保护字段,但我无法使用它们,因为它们的可见性受到保护.

以下是问题的简化:

public class A
    {
        protected object Something;

        public A Load()
        {
            return new A();
        }
    }

    public class ExtendedA : A
    {
        public void DoSomething()
        {
            // Get an instance.
            var a = Load();

            // Access protected fields (doesn't compile).
            a.Something = ....
        }
    }
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法来实现这一目标?

.net c# oop

3
推荐指数
1
解决办法
2720
查看次数

C#中的继承和引用包含基类的DLL

我有一个场景,编译器抱怨我错过了所需的参考.

我有3个组件:

  • A.DLL

    • 公共类BaseClass
  • B.DLL(参考文献A.DLL)

    • 公共类DerivedClass:BaseClass
  • C.DLL

    var derived = new DerivedClass();

在C.DLL中,我只引用B.DLL(我只需要访问DerivedClass).

编译器给出了一个错误,说我还需要引用A.DLL

这完全破坏了封装,我不确定为什么需要这样做(因为B.DLL引用了A.DLL).

编辑:关于"打破封装"的错误选择.我的意图是这导致了对这个项目(C.DLL)的额外编译时约束,因为我只是从B.DLL实例化类型,而不是从A.DLL实例化.

我希望删除这个编译时要求,主要是因为B和C坐在同一个解决方案中,但A没有.

.net c# reference

3
推荐指数
1
解决办法
1371
查看次数

.NET代码发布JIT的执行方式与本机代码相同

.NET语言都编译为中间语言(MSIL).

据我所知,在执行期间(有时在其他阶段,我不完全了解 - NGEN),代码被JIT(从MSIL编译成实际的机器代码).

我想知道在JITting代码之后是否存在性能"惩罚"来自代码在CLR上执行的事实,或者代码是否与任何其他本机代码"相同"?

.net c# clr jit

3
推荐指数
1
解决办法
413
查看次数

使用命名参数动态调用方法

我们目前正在使用.NET 3.5,部分应用程序使用动态调用(使用MethodBase.Invoke)

我想知道是否可以在命名参数(在.NET 4中)与动态调用混合,执行类似于:

// Dictionary that holds parameter name --> object mapping
var parameters = new Dictionary<string, object>();

// Add parameters ....

// Invoke where each parameter will match the one from the method signature.
methodInfo.Invoke(obj, parameters);
Run Code Online (Sandbox Code Playgroud)

是否有任何API允许此选项开箱即用?如果没有,是否有可能开发出一些解决方案来执行此操作?

编辑:

重新思考这个问题,听起来类似于编译器实际上需要匹配基于参数列表的方法调用.也许有一些编译器API(或新的Roslyn项目)可以轻松地做到这一点?(没有自己编码,可能容易出错).

.net c# reflection named-parameters roslyn

3
推荐指数
1
解决办法
7271
查看次数

将DOM元素id追溯回其ExtJs组件

我们正在为使用ExtJs构建的Web应用程序开发基于Web的自动化解决方案.

目前,我正在测试各种不同的对象识别技术,以最佳方式识别Web元素.

我们想使用IE开发人员工具(F12)来突出显示并选择页面上的DOM对象,并(以某种方式)获取相应的ExtJs组件(以及相应的属性,例如itemId).

这是通过代码还是通过其他技术实现的?

automation dom extjs webautomation

3
推荐指数
1
解决办法
6330
查看次数

MSBuild脚本中的重写AfterBuild目标未执行

我有一个非常简单的MSBuild脚本,该脚本可以构建一堆.sln文件:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <!-- Builds all *.sln files under this repository. -->
    <ItemGroup>
        <SolutionFiles Include="**/*.sln" />
    </ItemGroup>


    <Target Name="Build">
        <MSBuild Projects="@(SolutionFiles)" Targets="Rebuild" />
    </Target>   

    <Target Name="AfterBuild">
        <Message Text="After Build" />
    </Target>

    <Target Name="AfterRebuild">
        <Message Text="After Rebuild" />
    </Target>   

</Project>
Run Code Online (Sandbox Code Playgroud)

AfterBuild / AfterRebuild目标应该做其他事情,我现在正在测试它们。

我希望在每个项目构建后都可以激发这些目标,但是不会被激发。

难道我做错了什么?

编辑:由于每个项目都定义了自己的AfterBuild目标,我想这种方式是行不通的。我尝试将AfterBuildAfterRebuild目标放置在它们自己的文件(custom.targets)中,并使用/ p:CustomAfterMicrosoftCommonTargets运行MSBuild = custom.targets。这也没有用。

有什么建议么?

.net c# msbuild build

3
推荐指数
1
解决办法
4575
查看次数

C#相当于一个const指针/指向C++中的const

我正在学习C++的基础知识,来自.NET世界(C#).

我发现有趣的一个主题是const关键字及其与指针的使用(const指针/指向const的指针).

我想知道是否有任何C#语言相当于const指针/指向C++的指针?(我知道C#没有指针,我正在考虑引用C#中类似指针的类型).

另外,出于兴趣,如果没有这样的等价物,那么不包括这样一个特征的决定是什么?

c# c++ clr const

3
推荐指数
1
解决办法
2395
查看次数

无需提交即可将文件添加到git索引

使用Git时,我的工作流程通常涉及启动TortoiseGit并选择我想要提交的文件.

这(我假设)运行git add(?)并将这些更改提交给本地repo.

我的问题是 - 为什么ADDING文件与索引之间的分离以及需要委托它们?

有没有用于简单地将文件添加到索引而不同时提交它们的用例?

git version-control dvcs tortoisegit

3
推荐指数
1
解决办法
7523
查看次数

Assembly.ExportedTypes和Assembly.GetExportedTypes()之间有区别吗?

.NET Assembly类包含一个方法(GetExportedTypes())和一个属性(ExportedTypes).

这些文档似乎相同("返回程序集中所有公共可见类型的集合").这些之间有什么区别吗?或者这是与Assembly类的API有关的历史原因吗?

.net c# clr .net-assembly

3
推荐指数
1
解决办法
854
查看次数