小编Til*_*lak的帖子

为什么暴露类型必须为WinMD/WinRT组件密封?

VS编译器不允许为WINMD类型库创建密封的公开类型.

为什么要放置此限制?(我知道密封类型的优点,我的问题是关于Win RT组件).

.net sealed windows-8 windows-runtime winrt-xaml

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

linq匿名方法中的局部变量范围(闭包)

Linq Query中声明的局部变量的范围是什么.

我正在编写以下代码

   static void Evaluate()
    {
        var listNumbers = Enumerable.Range(1, 10).Select(i => i);
        int i = 10;
    }
Run Code Online (Sandbox Code Playgroud)

编译器标记的错误在行int i = 10,说明

A local variable named 'i' cannot be declared in this scope because it would give a different meaning to 'i', which is already used in a 'child' scope to denote something else 
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么会出现这个错误.

我的理解是,i在第一行之后(在foreach循环中)将超出范围.所以i可以再次宣布.

实际行为是i在第一行(在foreach循环中)之后无法访问,这是正确的.但i不能再宣布.这看起来很奇怪.

编辑这是基于安德拉斯的回应的以下问题.答案非常好,但会引起进一步的质疑.

  static void Evaluate3()
    {
        var listNumbers = Enumerable.Range(1, 10).Select(i => i);
        var listNumbers1 …
Run Code Online (Sandbox Code Playgroud)

.net c# linq closures anonymous-methods

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

需要了解C#虚拟方法的以下代码

这是一个显示虚拟方法的小代码.

class A
{
  public virtual void F() { Console.WriteLine("A.F"); }
}
class B: A
{
  public override void F() { Console.WriteLine("B.F"); }
}
class C: B
{
  new public virtual void F() { Console.WriteLine("C.F"); }
}
class D: C
{
  public override void F() { Console.WriteLine("D.F"); }
}

class Test
{
  static void Main() 
  {
    D d = new D();
    A a = d;
    B b = d;        

    a.F();
    b.F();        
 }
}
Run Code Online (Sandbox Code Playgroud)

此代码打印以下输出:

B.F
B.F
Run Code Online (Sandbox Code Playgroud)

我不明白为什么aF()会打印BF?

我认为它将打印DF,因为B类覆盖了A类的F(),然后使用"new"关键字将此方法隐藏在C类中,然后再次在D类中重写.所以最后DF保持不变.

但它不是那样做的.你能解释为什么要打印BF吗?

.net c# inheritance virtual-functions

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

递归删除目录中的文件,但保持dir结构不变

为了清理测试文件,我尝试执行以下操作.但它不清除文件以及不生成错误.

我错过了一些明显的东西吗

    private void CleanUpTempDirFiles()
    {
        var fileGenerationDir = new DirectoryInfo(Path.Combine(Path.GetTempPath(), "TestFilesDir"));

        fileGenerationDir.GetDirectories().ToList().ForEach(dir => dir.GetFiles().ToList().ForEach(file => file.Delete()));
    }
Run Code Online (Sandbox Code Playgroud)

.net c# linq linq-to-objects file

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

使用lambda/linq查询返回组中的最小值

我需要帮助创建一个lambda表达式来查询以下列表,以便检索每个通道中价格最低的项目.即,对于该示例项目A,D和G.

class Radio
{
    public string Name { get; set; }
    public int Channel { get; set; }
    public decimal Price { get; set; }
}

List<Radio> radios = new List<Radio>();
radios.Add(new Radio() { Name = "A", Channel = 1, Price = 10 });
radios.Add(new Radio() { Name = "B", Channel = 1, Price = 20 });
radios.Add(new Radio() { Name = "C", Channel = 1, Price = 30 });
radios.Add(new Radio() { Name = "D", Channel = 2, Price …
Run Code Online (Sandbox Code Playgroud)

.net c# linq lambda linq-to-objects

6
推荐指数
2
解决办法
9464
查看次数

测试驱动设计和分层架构

如何将TDD应用于具有分层架构的企业应用程序?

我想知道如何将TDD应用于具有以下功能的应用程序

  1. WPF应用程序(6-7屏幕)
  2. 3-4个模块(棱镜模块)
  3. 一些应用程序服务(日志记录,异常处理,安全性,授权,核心业务服务库)
  4. 数据访问层(使用实体框架)
  5. 一堆WCF服务

据我所知,首先是让架构正确.结果,识别出组件.接下来是独立开发组件,我卡住了.

使用TDD,(组件的)设计随着时间的推移而发展.对于下面的组件是(我认为)与TDD一起使用的方式

  1. 确定所有用例
  2. 确定所有测试用例
  3. 对于每个测试用例,编写所有方案,并针对每个方案编写一个失败的测试用例.制作一些代码,以便传递测试用例.如果找到新方案,请添加到列表
  4. 遵循Red-Green-Refactor,直到通过所有测试用例(对应于所有场景)
  5. 在重构中,不要忘记DRY,YAGNI,Mocking,DI等等.
  6. 最终结果是精心设计的组件(设计好多少取决于开发人员的经验和技能).

我面临的问题是,对于组件,直到我到达TDD过程的第6步,我不知道接口.由于有多个组件,多个团队,没有人确定他们会想出什么.

现在基于上述场景的摘要问题

  1. 我缺少一些基础知识吗?如果是,请指出适当的资源.
  2. 如何在分层架构上应用TDD?
  3. 如何进行多个组件的并行开发
  4. 使用WPF UI(PRISM)的TDD最佳实践
  5. TDD与数据库的最佳实践(使用实体框架)
  6. 使用TDD时如何决定WCF服务合同?

c# architecture wpf tdd wcf

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

如何使用控制台应用程序显示结果

我在C#中编写了一个类,我希望在控制台中显示.但我无法展示它.

我的程序没有任何错误,这意味着程序运行它但我看不到结果:(

请帮我解决这个问题.

.net c# console console-application output

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

什么是.net中的AutoClass?

我正在阅读Inside C#,我偶然发现了Type.IsAutoClass.

文件说

如果为Type选择了字符串格式属性AutoClass,则为true;否则为false.否则,错误.

问题是AutoClass它影响的是什么以及如何影响Type

请注意,这是一个学术问题,并且在项目中没有实际用法(据我所知),我与之相关.

.net c# reflection types autoclass

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

在XAML中作为资源进行多绑定

是否可以(如果是的话)将多值绑定表达式添加到资源中.

我有一个多值绑定,它在其中一个绑定中采用2个单独的绑定和转换器参数.

我必须将此绑定用于5个不同的项目,并且这些绑定标记仅在转换器参数中有所不同.休息一切都一样.

我想避免重复多绑定样板标签.

c# wpf xaml binding multibinding

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

Action,Func和Predicate委托 - C#

我试图理解Action<T>, Func<T> and Predicate<T>代表之间的差异,作为我的WPF/MVVM学习的一部分.

我知道Action<T> and Func<T>两个都是零到一个+参数,只Func<T>返回一个值,而Action<T>不是.

至于Predicate<T>- 我不知道.

因此,我提出了以下问题:

  1. 怎么Predicate<T>办?(欢迎举例!)
  2. 如果什么都不Action<T>返回,那么使用它会不会更简单?(或任何其他类型,如果我们正在讨论.)voidFunc<T>

我希望你在问题中避免使用LINQ/List示例.
我已经看过那些了但是它们只是让它变得更加混乱,因为让我对这些代表"感兴趣"的代码与它无关(我想!).
因此,我想使用我熟悉的代码来获得我的答案.

这里是:

public class RelayCommand : ICommand
{
    readonly Action<object> _execute;
    readonly Predicate<object> _canExecute;

public RelayCommand(Action<object> execute)
    : this(execute, null)
{
}

public RelayCommand(Action<object> execute, Predicate<object> canExecute)
{
    if (execute == null)
        throw new ArgumentNullException("execute");

    _execute = execute;
    _canExecute = canExecute;
}

[DebuggerStepThrough]
public bool CanExecute(object parameters)
{
    return …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf delegates mvvm

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