嘿伙计们,我试图获取用户正在使用的文件夹的选定文件.我有以下代码已经运行,但只在桌面文件上:
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) 问题
我有一些问题需要了解我的代码中何时何地应该使用像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)
题
我什么时候应该使用依赖注入器?
什么时候不应该使用依赖注入器?
c# dependencies dependency-injection ninject inversion-of-control
我正在努力变得更熟悉测试驱动开发.到目前为止,我已经看到了一些简单的例子,但我仍然遇到了复杂逻辑的问题,例如我的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实践?
有什么区别
Foo<T> where T : BaseObject
Run Code Online (Sandbox Code Playgroud)
和
Foo<BaseObject>
Run Code Online (Sandbox Code Playgroud)
这句话不一样吗?
在下面的代码中,创建了一个TStringList类型的新对象,并将其传递给使用该对象的过程.通过将对象传递给方法ProcToFillStringList,可以通过复制引用来创建新的对象引用.我对此代码的疑问是:
方法返回后,参数SList中存储的对象引用会发生什么?它是否从堆栈中删除对象的引用?
Free()方法实际上在内部做了什么?它是从堆栈中删除对象的所有引用还是删除对象本身?哪些参考被删除?
当方法返回时,对象引用(不是对象本身)会自动从堆栈中删除吗?
传递参考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) 我在这里有一个小问题,希望有人可以帮助我。
我想做一个从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文件中创建了一个自定义转换器,但从未调用该转换器。我猜应用程序在到达此转换器之前遇到问题。
有趣的是,我可以成功地将字段映射为另一种方式,因此可以将对象整数化。
我感谢您的任何想法,如果您需要进一步的信息,请给我一个字。
谢谢大家。
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)
有没有其他方法可以进行相同的查询?
谢谢
洛伦佐.
添加System.Net这样的有什么区别:
CookieContainer globalcontainer = new System.Net.CookieContainer();
Run Code Online (Sandbox Code Playgroud)
并在声明中使用没有命名空间的类
CookieContainer globalcontainer = new CookieContainer();
Run Code Online (Sandbox Code Playgroud)
哪个效率更高?
在我的应用程序中,我想显示一个文件夹及其包含的书签.我尝试实现这样的事情:
因此我必须解析以下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) 我在使用类似的方法的问题Contains,Remove或IndexOf的TObjectList<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) 我在下面有一些代码.
interface IFirst
{
void Show();
}
public class Test : IFirst
{
void IFirst.Show()
{
Console.WriteLine("First");
}
}
Run Code Online (Sandbox Code Playgroud)
在实现类中,我无法为Show()提供公共访问说明符.我如何从主程序中调用此Show()?