小编MUG*_*G4N的帖子

使用WinAPI获取文件夹的选定项目

嘿伙计们,我试图获取用户正在使用的文件夹的选定文件.我有以下代码已经运行,但只在桌面文件上:

private string selectedFiles()
{
    // get the handle of the desktop listview
    IntPtr vHandle = WinApiWrapper.FindWindow("Progman", "Program Manager");
    vHandle = WinApiWrapper.FindWindowEx(vHandle, IntPtr.Zero, "SHELLDLL_DefView", null);
    vHandle = WinApiWrapper.FindWindowEx(vHandle, IntPtr.Zero, "SysListView32", "FolderView");

    //IntPtr vHandle = WinApiWrapper.GetForegroundWindow();

    //Get total count of the icons on the desktop
    int vItemCount = WinApiWrapper.SendMessage(vHandle, WinApiWrapper.LVM_GETITEMCOUNT, 0, 0);
    //MessageBox.Show(vItemCount.ToString());
    uint vProcessId;
    WinApiWrapper.GetWindowThreadProcessId(vHandle, out vProcessId);
    IntPtr vProcess = WinApiWrapper.OpenProcess(WinApiWrapper.PROCESS_VM_OPERATION | WinApiWrapper.PROCESS_VM_READ |
    WinApiWrapper.PROCESS_VM_WRITE, false, vProcessId);
    IntPtr vPointer = WinApiWrapper.VirtualAllocEx(vProcess, IntPtr.Zero, 4096,
    WinApiWrapper.MEM_RESERVE | WinApiWrapper.MEM_COMMIT, WinApiWrapper.PAGE_READWRITE);
    try
    {
        for …
Run Code Online (Sandbox Code Playgroud)

c# windows winapi windows-explorer

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

我什么时候应该使用像Ninject这样的依赖注入器

问题

我有一些问题需要了解我的代码中何时何地应该使用像Ninject这样的依赖注入器.

比方说,我们有以下代码:

//WITHOUT NINJECT:     
IMailSender mailSender = new MockMailSender();

//WITH NINJECT:
IMailSender mailSender = kernel.Get<IMailSender>();
Run Code Online (Sandbox Code Playgroud)

这个不是依赖注入,所以在这种情况下使用Ninject是否有意义?

另一个例子显示了如何使用依赖注入器使我的代码变得非常混乱:

 public void CalculateRevenueRecognitions(IContract contract)
    {
        //WITH NINJECT
        var kernel = new StandardKernel(new DefaultModule());
        var arguments = new List<IParameter>
        {
            new ConstructorArgument("amount",contract.Revenue),
            new ConstructorArgument("date", contract.WhenSigned)
        };
        contract.AddRevenueRecognition(kernel.Get<IRevenueRecognition>(arguments.ToArray()));

        //WITHOUT NINJECT:
        contract.AddRevenueRecognition(new RevenueRecognition(contract.Revenue, contract.WhenSigned))));
    }
Run Code Online (Sandbox Code Playgroud)

我什么时候应该使用依赖注入器?

  1. 关于构造函数注入,参数注入等
  2. 在对象创建上(依赖注入器是否用新的替换经典对象创建?)
  3. 是其他人?

什么时候不应该使用依赖注入器?

c# dependencies dependency-injection ninject inversion-of-control

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

最佳实践复杂对象的TDD

我正在努力变得更熟悉测试驱动开发.到目前为止,我已经看到了一些简单的例子,但我仍然遇到了复杂逻辑的问题,例如我的DAL中的这个方法:

public static void UpdateUser(User user)
        {
            SqlConnection conn = new SqlConnection(ConfigurationSettings.AppSettings["WebSolutionConnectionString"]);
            SqlCommand cmd = new SqlCommand("WS_UpdateUser", conn);

            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("@UserID", SqlDbType.Int, 4);
            cmd.Parameters.Add("@Alias", SqlDbType.NVarChar, 100);
            cmd.Parameters.Add("@Email", SqlDbType.NVarChar, 100);
            cmd.Parameters.Add("@Password", SqlDbType.NVarChar, 50);
            cmd.Parameters.Add("@Avatar", SqlDbType.NVarChar, 50);
            cmd.Parameters[0].Value = user.UserID;
            cmd.Parameters[1].Value = user.Alias;
            cmd.Parameters[2].Value = user.Email;
            cmd.Parameters[3].Value = user.Password;
            if (user.Avatar == string.Empty)
                cmd.Parameters[4].Value = System.DBNull.Value;
            else
                cmd.Parameters[4].Value = user.Avatar;

            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
        }
Run Code Online (Sandbox Code Playgroud)

这种方法有什么好的TDD实践?

tdd unit-testing

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

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

Free()方法在内部实际执行了什么以及它如何处理对象引用?

在下面的代码中,创建了一个TStringList类型的新对象,并将其传递给使用该对象的过程.通过将对象传递给方法ProcToFillStringList,可以通过复制引用来创建新的对象引用.我对此代码的疑问是:

  1. 方法返回后,参数SList中存储的对象引用会发生什么?它是否从堆栈中删除对象的引用?

  2. Free()方法实际上在内部做了什么?它是从堆栈中删除对象的所有引用还是删除对象本身?哪些参考被删除?

  3. 当方法返回时,对象引用(不是对象本身)会自动从堆栈中删除吗?

  4. 传递参考byref会更好吗?

var
  SL: TStringList; // first object reference
begin
  SL := TStringList.Create; // creating object
  try
    ProcToFillStringList(SL);
  finally
    SL.Free; // -> what gets 'freed' here? the object? the references? both?
  end;
end;

procedure ProcToFillStringList(const SList: TStrings); // second object reference
  SList.Add('x'); // not calling Free -> does the reference get removed?
end;
Run Code Online (Sandbox Code Playgroud)

memory delphi object-reference

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

MappingException:InvocationTargetException

我在这里有一个小问题,希望有人可以帮助我。

我想做一个从Object到Integer的映射。该对象被标记为Fetchtype.Lazy。

进行映射时,出现以下错误消息:

11:31:46,569 ERROR MappingProcessor:253 - Field mapping error -->
  MapId: null
  Type: null
  Source parent class: ClassA
  Source field name: MyObjectProperty
  Source field type: null
  Source field value: null
  Dest parent class: ClassB
  Dest field name: myIntegerProperty
  Dest field type: java.lang.Integer
org.dozer.MappingException: java.lang.reflect.InvocationTargetException
    at org.dozer.util.MappingUtils.throwMappingException(MappingUtils.java:88)
    at org.dozer.util.ReflectionUtils.invoke(ReflectionUtils.java:258)
    at org.dozer.propertydescriptor.GetterSetterPropertyDescriptor.invokeReadMethod(GetterSetterPropertyDescriptor.java:234)
    at org.dozer.propertydescriptor.GetterSetterPropertyDescriptor.getPropertyValue(GetterSetterPropertyDescriptor.java:68)
    at org.dozer.fieldmap.FieldMap.getSrcFieldValue(FieldMap.java:82)
Run Code Online (Sandbox Code Playgroud)

InnerException:

Caused by: java.lang.IllegalStateException: Attempt to access an unloaded field of detached instance
Run Code Online (Sandbox Code Playgroud)

我在推土机xml文件中创建了一个自定义转换器,但从未调用该转换器。我猜应用程序在到达此转换器之前遇到问题。

有趣的是,我可以成功地将字段映射为另一种方式,因此可以将对象整数化。

我感谢您的任何想法,如果您需要进一步的信息,请给我一个字。

谢谢大家。

java jpa openjpa dozer

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

使用LINQ使用现有数组排序列表

class Car{
     int ID {get;set;}
     string Text {get;set;}
}

List<Car> allCars = new List<Car>(){ new Car{ ID = 1, Text = "one"}, new Car{ ID = 2, Text = "two"}, new Car{ ID = 3, Text = "three"}, new Car{ ID = 4, Text = "four"} };
int[] existingCarIds = new int[]{ 2, 4 };
Run Code Online (Sandbox Code Playgroud)

我想有这个清单.

CarWithID2
CarWithID4
CarWithID1
CarWithID3
Run Code Online (Sandbox Code Playgroud)

所以我做了:

List<Car> carList = allCars.Where(d => existingCarIds.Contains(d.ID)).Concat(allCars.Where(d => !existingCarIds.Contains(d.ID))).ToList();
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以进行相同的查询?

谢谢

洛伦佐.

c# linq .net-3.5

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

System.Net和没有System.Net之间的区别

添加System.Net这样的有什么区别:

 CookieContainer globalcontainer = new System.Net.CookieContainer();
Run Code Online (Sandbox Code Playgroud)

并在声明中使用没有命名空间的类

 CookieContainer globalcontainer = new CookieContainer();
Run Code Online (Sandbox Code Playgroud)

哪个效率更高?

c# system.net

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

使用linq将json字符串解析为对象

在我的应用程序中,我想显示一个文件夹及其包含的书签.我尝试实现这样的事情:

  • 文件夹维基百科
    • url a
    • 网址b
    • 网址...
  • 文件夹StackOverflow
    • url a
    • 网址b

因此我必须解析以下json字符串:

{
       "checksum": "7d7205349eb64a4894aafc5ce074c0c0",
       "roots": {
          "bookmark_bar": {
             "children": [ {
                "children": [ {
                   "date_added": "13021579661026871",
                   "id": "28",
                   "name": "design patterns - Do you allow the Web Tier to access the DAL directly? - Stack Overflow",
                   "type": "url",
                   "url": "http://stackoverflow.com/questions/796656/do-you-allow-the-web-tier-to-access-the-dal-directly"
                }, {
                   "date_added": "13021665700468056",
                   "id": "31",
                   "name": "VS 2010 Error when creating or opening projects - Stack Overflow",
                   "type": "url",
                   "url": "http://stackoverflow.com/questions/8403853/vs-2010-error-when-creating-or-opening-projects"
                } ],
                "date_added": "13021579680308871",
                "date_modified": "13024947520078515",
                "id": "29", …
Run Code Online (Sandbox Code Playgroud)

c# linq json json.net

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

如何使用TObjectList <T>的Contains,Remove或IndexOf等方法

我在使用类似的方法的问题Contains,RemoveIndexOfTObjectList<T>,类当T是如自定义类型TSocket在下面的示例中代码.

我开始实现一个自定义TSocket类型,并试图在类似的列表中使用它TObjectList<TSocket>:

list := nil;
socket := nil;
try
  list := TObjectList<TSocket>.Create();
  socket := TSocket.Create(TIpAddress.Parse('127.0.0.1'),6857);

  // add new socket object with equal values to list
  list.Add(TSocket.Create(TIpAddress.Parse('127.0.0.1'),6857));

  // should return true but returns false
  if list.Contains(socket) then
    WriteLn('socket contained in list')
  else
    WriteLn('socket not contained in list');

  // should return number 0 but returns -1
  if list.IndexOf(socket) = 0 then
    WriteLn('socket contained in list')
  else
    WriteLn('socket not …
Run Code Online (Sandbox Code Playgroud)

delphi equals tobjectlist

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

如何调用明确实现的方法

我在下面有一些代码.

interface IFirst
{
   void Show();
}

public class Test : IFirst
{
   void IFirst.Show()
   {
       Console.WriteLine("First");
   }
}
Run Code Online (Sandbox Code Playgroud)

在实现类中,我无法为Show()提供公共访问说明符.我如何从主程序中调用此Show()?

c# oop

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