小编Val*_*zub的帖子

向所有类添加[DataContract]和[DataMember]是否会影响性能

假设我们有一个代码生成工具可以创建数千个C#类,我们有时需要将这些属性添加到它们中.

我们正在考虑是否更好地放置[DataContract][DataMember]使用所有适当的类,或者我们需要创建一个特殊的策略,以确定是否这样做以节省一些可能的?在AtribbuteAll方法中失去了性能.

最后,问题是添加属性是否会以某种方式影响性能?

我认为在类上添加一个属性只会保留其类型信息,不应该影响任何性能但是希望在这里100%肯定

c# datacontract c#-4.0

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

使用IoC容器的OOD - 如何构建依赖对象?

我正在尝试使用IoC,DI和OOD以获得更好的可测试性和更松散的耦合.

因此,当我们设计大量使用IoC和DI的类时,我们可以使用具有多个依赖项的类来结束

class Processor
{
    private IService1 m_Service1;
    private IService2 m_Service2;
    private IService3 m_Service3;

    //approach 1 
    public Processor(IService1 service1, IService2 service2, IService3 service3)
    {
        m_Service1 = service1;
        m_Service2 = service2;
        m_Service3 = service3;
    }
    //approach 2
    public Processor(IContainer container)
    {
        m_Service1 = container.Resolve<IService1>();
        m_Service2 = container.Resolve<IService2>();
        m_Service3 = container.Resolve<IService3>();
    }

    //approach 3
    public delegate Processor Factory();

}
Run Code Online (Sandbox Code Playgroud)

我在想这里应该采用什么方法.我们可以给构造函数留下3个参数,但是如果我们使用autofac构建应用程序(例如),很可能除了从某些容器实例中解析类型之外很少使用它

    Processor proc = new Processor(
 container.Resolve<IService1>(),
 container.Resolve<IService2>(),
 container.Resolve<IService3>());
Run Code Online (Sandbox Code Playgroud)

所以当我们依赖容器中的多种类型时,我想也许方法2更好.无论如何,我们将不得不在某处添加autofac的引用,所以任何理由现在都不要这样做?

Autofac还提供委托工厂方法方法

http://code.google.com/p/autofac/wiki/DelegateFactories

var processorFactory = container.Resolve<Processor.Factory>();
Processor processor = processorFactory.Invoke();
Run Code Online (Sandbox Code Playgroud)

所以我们也有方法3 - 我们不会使用构造函数来创建我们的类实例,而是我们将从容器中调用已解析的委托,它将为我们解析依赖关系. …

c# oop dependency-injection inversion-of-control autofac

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

了解非阻塞线程同步和Thread.MemoryBarrier

在这个线程在线书籍:http: //www.albahari.com/threading/part4.aspx

这是一个例子 Thread.MemoryBarrier()

   class Foo
{
  int _answer;
  bool _complete;

  void A()
  {
    _answer = 123;
    Thread.MemoryBarrier();    // Barrier 1
    _complete = true;
    Thread.MemoryBarrier();    // Barrier 2
  }

  void B()
  {
    Thread.MemoryBarrier();    // Barrier 3
    if (_complete)
    {
      Thread.MemoryBarrier();       // Barrier 4
      Console.WriteLine (_answer);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我们讨论了是否有线程阻塞正在进行?

我认为有一些,特别是考虑到了

在2010年代的桌面上,完整的围栏需要大约10纳秒.

另一方面,完全围栏只应该disable instructions reodering and caching通过它的声音不符合线程阻塞的条件,(lock与其清除线程等待其他人在继续之前释放锁定并且在此期间被阻止的情况不同)

关于那个线程'阻止状态'.我说的不是线程是否被置于阻塞状态,而是是否有一些线程同步发生,这意味着一个线程无法运行,而其他线程不允许它这样做,通过MemoryBarrier in这个案例.

我也希望清楚地了解每个障碍实现的目标.例如Barrier 2 - 它如何提供新鲜度保证以及它如何连接到屏障3?如果有人会在这里详细解释每个障碍的目的(如果不存在1或2或3或4那么可能会出错)我认为id会大大提高我对此的理解.

编辑:它现在大部分都清楚了1,2和3.然而,3不具备的4还不清楚.

.net c# multithreading

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

使用 Tuple 类在 C# 中解决问题的真实世界和有效示例

我们一直在讨论元组及其各种可能的用途。在几乎所有情况下,这听起来像是邪恶的根源,它使设计变得更糟,并且通常在任何可以使用它的地方都需要一个专门的类而不是元组。

据说它与 DB 很接近,但在 db 持久性逻辑代码中也很难找到 Tuple 的用途。

有没有人在现实世界中使用 Tuple 的任何好的样本,最好更接近一些现实世界的域模型问题或任何实际使用。

c# tuples c#-4.0

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

C++使用std和boost命名空间最佳实践

可能重复:
您是否更喜欢C++中的显式名称空间或"使用"?

嗨,大家好我是一个C#开发人员,但我的朋友是一个C++,他向我展示了充满了调用的代码,如std :: for_each和boost :: bind,我习惯在C#中使用,并认为使用指令会摇滚为了代码的可读性和通常更快的开发,例如在C#foreach语句之前键入任何命名空间将是一件痛苦的事.

我想知道使用这种流行命名空间的缺点和优点是什么?是否包含这些名称空间是最佳做法?

c++ using

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

如何在不关注其他内容的情况下解散TextBox

我相信,当我的申请开始时,没有什么是重点.至少它看起来像.我想向事件添加事件处理程序,GotFocus因此控件显示弹出窗口并失去焦点,因此弹出窗口可以再次显示而无需手动删除焦点并将其设置回来.此外,我不需要将我的文本框置于聚焦的可视状态,因为它的服务对用户没有用(虽然这可以通过模板进行更改但是这个问题的答案可以解决这两个问题).

如果我对我的初步观察有误,并且总是专注于Silverlight,我想知道要关注什么,所以看起来没有什么是专注的(比如应用程序启动时).如果有办法完全消除可见焦点 - 这种方法会更好.

编辑:实际上在我的情况下,当焦点集中在应用程序的开始时,它发现了一个没有视觉风格差异的控件.我没有发现任何更聪明的事情,然后将它集中在我的Unfocus()相关方法中.为了更进一步,我可以建议按[enter]键,看看会发生什么,在我的情况下它也改变了聚焦控制状态,看起来像是没有重点.

注意:在Silverlight中没有"没有焦点的状态"

.net silverlight wpf silverlight-4.0

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

列表上的散列函数与其中的项目顺序无关

我想要一个为一组整数赋值的字典。

例如key[1 2 3]并且value将具有一定的价值。

问题是[3 2 1]在我的情况下需要相同的处理,因此如果我采用哈希方法,哈希值必须相等。

该套装将有 2 到 10 个项目。

项目的总和通常是固定的,所以我们不能根据总和制作哈希码,这是这里的第一个自然想法。

不是家庭作业,实际上在我的代码中面临这个问题。

这个集合基本上是IEnumerable<int>在 C# 中,所以任何数据结构都可以存储它们。

任何帮助表示赞赏。性能在这里也很重要。

一个直接的想法:我们可以总结一下items^2,已经得到了一些更好的哈希,但我仍然想听听一些想法。

编辑:嗯,真的很抱歉各位,每个人都建议订购,我没想到我需要说实际订购和散列是我当前使用的解决方案,我正在考虑更快的替代方案。

c# algorithm hash-function

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

我认为我正确配置了AppFabric,但AppFabric仪表板上没有发生任何事情

我已经为SQL Server 2008 DB设置了AppFabric以及监视和持久性配置(以防万一).在我的服务应用程序中,我可以看到它具有默认监控级别,因此应该监控事件,我使用我的WCF服务 - 进行各种调用,但是当我检查仪表板时,它到处显示0 0 0.

还有其他东西需要设置吗?当我在IIS控制面板中使用AppFa bric配置时,我不会在任何地方出现任何错误,因此看起来一切都应该启动并运行.我使用最新版的appfabric.

appfabric

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

不同CPU核心上的上下文切换和线程执行

从我关于SO的另一个问题我发现它可能遵循简单的方法

  void B()
  {
    if (_complete)
    {
      Console.WriteLine (_answer);
    }
  }
Run Code Online (Sandbox Code Playgroud)

如果在if和console writeline之间发生上下文切换,可能会在不同的CPU上执行..这对我来说是新闻,所以我想知道现在什么时候单线程代码可以转换为另一个CPU以及为什么它可能在上面这么简单的情况下有意义?

.net c# multithreading context-switch memory-barriers

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

如果T是int,拳击会在这里发生吗?

public static bool Equal<T>(T value, T match) {
           return Equals(value, match);
       }
Run Code Online (Sandbox Code Playgroud)

所以问题是如果T是int32是否会在这里装拳击或编译器将选择int32 Equals没有拳击?

c# boxing

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

如何从silverlight控件或其中创建图像?

我想保存我当前的表格(实际上是它的一部分,一种特定的裁剪图像)外观,并将其用作另一个silverlight控件/页面上的图像(动态地和编程显然)

我在这里找到了一个关于2岁的问题,并且在SL2.0中没有办法解决这个问题

Silverlight:从silverlight控件创建图像

我无法在互联网上找到答案所以我在问SL4.0现在是否有可能?

silverlight silverlight-4.0

0
推荐指数
1
解决办法
1423
查看次数