小编Ode*_*ded的帖子

添加新的动态属性

我们在msdn中读到我们使用DynamicObject Class"添加新的动态属性"我编写了一个以下程序

public class DemoDynamicObject : DynamicObject
{

}
class Program
{
    public static void Main()
    {
        dynamic dd = new DemoDynamicObject();
        dd.FirstName = "abc";
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个程序时,它会给出运行时错误:'DemoDynamicObject'不包含'FirstName'的定义,如果我们通过使用DynamicObject Class添加动态属性那么为什么它可以给出这个错误任何人都可以告诉我原因和解决方案?

c#-4.0

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

使方法"内部"去除依赖性(用于单元测试) - 一个好的做法?有更好的方法吗?

我有一个课程如下.

public class MyClass  
{  
    public MyMethod()  
    {  
      int x = CalculateSomething();  
    }

   private int CalculateSomething()  
   {  
      // Do something and return an int    
      return 100;  
   }  
}  
Run Code Online (Sandbox Code Playgroud)

为了进行单元测试,我添加[assembly: InternalsVisibleTo("MyTests")]了私有方法并将其更改为内部虚拟方法.在单元测试项目中,我创建了一个类MockMyClass并创建了如下的私有方法.

public class MockMyClass : MyClass  
{  
   public bool MadeHappyNoise {get; set;}
   internal override int CalculateSomething()  
   {  
      MadeHappyNoise = true;  
      return base.CalculateSomething();  
   }  
}
Run Code Online (Sandbox Code Playgroud)

单元测试现在如下

[TestMethod()]
public void WasCalculateSomethingCalledOK()  
{  
   MockMyClass mk = new MockMyClass();
   mk.MyMethod();  
   Assert.IsTrue(mk.MadeHappyNoise, "Oops...CalculateSomething not called...");  
}  
Run Code Online (Sandbox Code Playgroud)

几个问题:这是删除依赖关系的好方法吗?我个人不喜欢将方法从私有更改为内部但没有选项(除了使用Reflection之外).此外,驻留在生产代码中的属性InternalsVisibleTo("MyTests")也不好.有人能指出我更好的解决方案吗?谢谢.

c# unit-testing

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

<asp:table>和<table>之间的区别?

伙计们两者之间有什么区别?

如果我设置<table runat=server>我也可以在服务器端使用它.

两者之间有什么不同吗?

感谢名单

asp.net

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

javascript创建多维数组语法

今天我听说可以使用这种语法在js中创建一个多维数组:

var a = new Array(3,3);
a[2][2] = 2;
alert(a[2][2])
Run Code Online (Sandbox Code Playgroud)

然而,这在歌剧中不起作用.我错了吗?

javascript

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

使 valgrind 能够在 C++ 需要时读取用户输入

我正在尝试使用 valgrind 运行我的 C++ 程序,但是我在程序中有一些需要用户从 stdin 输入的点,但是当我使用 valgrind 运行时,它不会让用户为程序输入任何内容,有没有办法解决这个问题?

四处寻找,但没有找到答案。

c++ valgrind user-input

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

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

在C#中创建三级嵌套字典

我想创建一个以下类型的字典,

var data = new Dictionary<string, Dictionary<string, Dictionary<string, int>>>();
Run Code Online (Sandbox Code Playgroud)

当我尝试以下列方式向字典添加值时,我得到一个KeyNotFound异常.

data[key1][key2][key3]= 3;
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?我假设如果在字典中找不到密钥,它会自动添加到字典中.

否则有没有办法在运行时添加键?

我期待以下类型的输出:

 [male,[animal,[legs,4]

               [eyes,2]]
       [human,[hands,2]
               [ears,2]]

[female,[animal,[nose,1]

                 [eyes,2]]
         [bird,[wings,2]
                 [legs,2]]
Run Code Online (Sandbox Code Playgroud)

c# dictionary

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

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

组织数据库工作的最佳方式

我想知道从C#代码组织数据库的最佳方法是什么.

我曾经有过不同的方法:

  1. 每个对象都有Save,Update和Delete方法,它们实现了所有逻辑.
  2. 有一些静态类具有静态方法Get,GetList,Update - 几乎与以前相同的方法,但数据库逻辑是从数据域类中提取的.

现在我认为为每个需要存储的datadomain类存放一些非静态类会很好,这将会进行存储.

最好的方法是什么?有没有好的库提供良好的API来存储对象?

c# database architecture

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

获取两个DateTime之间的(平铺)小时列表

我写了一个函数,包括给我一个介于两者之间的小时列表DateTime.

但最终它看起来并不是很容易阅读,它让我想要对它进行单元测试,即使我正在研究的项目根本不进行单元测试.

所以我的问题是,是否有更清晰,更有效的方式来写这个?:

码:

private List<DateTime> GetHoursForEvent(DateTime start, DateTime end)
{
    var hours = new List<DateTime>();

    DateTime startFloor = Convert.ToDateTime(start.ToString("MM/dd/yyyy HH:00:00"));
    DateTime endFloor = Convert.ToDateTime(end.ToString("MM/dd/yyyy HH:00:00"));

    for (double dblDate = startFloor.ToOADate(); 
         dblDate <= endFloor.ToOADate(); 
         dblDate += (1.0 / 24.0))
    {
        hours.Add(DateTime.FromOADate(dblDate));
    }

    return hours;
}
Run Code Online (Sandbox Code Playgroud)

输入:

DateTime start = Convert.ToDateTime("2012-04-01 04:22:00");
DateTime end   = Convert.ToDateTime("2012-04-02 00:05:00");
Run Code Online (Sandbox Code Playgroud)

结果:

2012-04-01 04:00:00
2012-04-01 05:00:00
2012-04-01 06:00:00
2012-04-01 07:00:00
2012-04-01 08:00:00
2012-04-01 09:00:00
2012-04-01 10:00:00
2012-04-01 11:00:00
2012-04-01 12:00:00
2012-04-01 13:00:00
2012-04-01 …
Run Code Online (Sandbox Code Playgroud)

c#

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