小编Sta*_*ker的帖子

表达式的Func或Predicate

让我们说:

 Func<Customer,bool > a = (c) => c.fullName == "John";
Run Code Online (Sandbox Code Playgroud)

现在我想转换为表情树以任何方式做到这一点?

我知道我可以从第一个地方定义它作为expressiontree但我的情况是不同的,因为我必须先连接一些lambda表达式然后将它传递给一个采用expressiontree的方法,这样做会导致编译时错误!

例:

        Func<Customer, bool> a = (c) => c.fullName == "John";
        Func<Customer, bool> b = (c) => c.LastName == "Smith";
        Func<Customer, bool> final = c => a(c) && b(c); 
Run Code Online (Sandbox Code Playgroud)

现在我想将final传递给一个需要的方法

ExpressionTree<Func<Customer,bool >>
Run Code Online (Sandbox Code Playgroud)

它给出了编译时错误

提前致谢

c# linq lambda predicate

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

短信网关 SMSC/ESME TON/NPI

我正在开发一个 SMS 网关,我正在考虑我应该在其中实现的功能。因此,我查看了一些 SMS 网关(SMSNOW、SMS studio 和 Ozeki)作为示例。

我几乎完成了实现,但我在几乎所有 SMS 网关中遇到了一个功能,它允许用户为 SMSC 和 ESME 指定 TON/NPI。

我知道当 SMS 网关准备使用 SMPP 协议发送短信时,它需要解析发件人/收件人号码,并在此基础上指定 TON/NPI。而且我知道允许您覆盖默认值并指定您自己的 TON/NPI 很棒。

我不明白的是为什么所有 SMS 网关都为您提供选项,当它充当 SMSC 时(当它接收 SMS 时,而不是发送它们时)为 SMS 网关指定您自己的 TON/NPI。

当 SMS 网关收到 smpp SMS 时,它会用指定的 TON/NPI 做什么?

sms smpp telecommunication sms-gateway

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

Nlog记录对象

假设我想使用Nlog记录一个对象Mycustomer.

我想要这样的东西:

logger.Trace(mycustomer)

现在在配置中如何指定要打印的属性?就像是:

      <target name="output" xsi:type="Debugger" layout="${Name}" />
Run Code Online (Sandbox Code Playgroud)

c# logging nlog

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

从64位的SysListView32获取文本

这是我的代码:

   public static string ReadListViewItem(IntPtr lstview, int item)
    {
        const int dwBufferSize = 1024;

        int dwProcessID;
        LV_ITEM lvItem;
        string retval;
        bool bSuccess;
        IntPtr hProcess = IntPtr.Zero;
        IntPtr lpRemoteBuffer = IntPtr.Zero;
        IntPtr lpLocalBuffer = IntPtr.Zero;
        IntPtr threadId = IntPtr.Zero;

        try
        {
            lvItem = new LV_ITEM();
            lpLocalBuffer = Marshal.AllocHGlobal(dwBufferSize);
            // Get the process id owning the window
            threadId = GetWindowThreadProcessId(lstview, out dwProcessID);
            if ((threadId == IntPtr.Zero) || (dwProcessID == 0))
                throw new ArgumentException("hWnd");

            // Open the process with all access
            hProcess = …
Run Code Online (Sandbox Code Playgroud)

c# winapi syslistview32

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

从BlockingCollection中删除项目

如何从BlockingCollection中删除项目?以下哪项是正确的?

myBlockingCollection.Remove(Item);
Run Code Online (Sandbox Code Playgroud)

要么

myBlockingCollection.Take(Item);
Run Code Online (Sandbox Code Playgroud)

c# collections

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

将intPtr添加到int会在.net framework 3.5上生成错误

我有这个代码:

lvItem.pszText = (IntPtr)(lpRemoteBuffer + Marshal.SizeOf(typeof(LV_ITEM)));
Run Code Online (Sandbox Code Playgroud)

它在4.0上工作正常.

如果我将项目降级到3.5,它会给我这个错误:

Operator '+' cannot be applied to operands of type 'System.IntPtr' and 'int'
Run Code Online (Sandbox Code Playgroud)

任何想法如何解决这个问题,让它在3.5上工作

我不知道为什么它在4.0中有效?

提前致谢

c# unsafe unmanaged

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

NHibernate中的表达树

我有一个有这个签名的方法

public static IList<T> GetBy<T>(System.Linq.Expressions.Expression<Func<T, bool>> expression)
Run Code Online (Sandbox Code Playgroud)

我用来传递lambda表达式并通过从expressiontree中检索数据来在nhibernate中进行搜索限制.

所以当类用户传递类似于:

c => c.fullName == "John" && c.lastName == "Smith" && c.lastName != "" || c.fullName != ""  && c.Age > 18
Run Code Online (Sandbox Code Playgroud)

我从表达式树中读取这个结构,这样我就有了一个完整的intellisense方法来提供搜索条件

换句话说:我需要将搜索条件传递给数据访问层(Nhibernate)

所以我需要从表达式树中提取标准,然后通过示例将其传递给n hibernate:

c=>c.fullname = "John" 
Run Code Online (Sandbox Code Playgroud)

我将从表达式树中提取以下信息:

propertyname = fullname , value = "John" , restrictiontype = "equality" 
Run Code Online (Sandbox Code Playgroud)

然后将此信息传递给nhibernate,如下所示:

ICriteria crit = session.CreateCriteria(typeof(T));
                    crit.Add(Restrictions.Eq(propretyName, value));
    IList<T> list = crit.Add(List<T>())
                    return list;
Run Code Online (Sandbox Code Playgroud)

无论如何问题是它很难从expressiontree中读取,所以我想知道你们是否有任何简单的方法可能在expressiontree里面迭代来提取数据,或者你们有一些代码可以从ExpressionTree中检索数据.

c# linq nhibernate expression-trees

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

从WebRequest获取QueryStrings

让我说我有这个:

WebRequest myWebRequest1 = (WebRequest)asynchronousResult.AsyncState;
Run Code Online (Sandbox Code Playgroud)

我知道我可以得到这样的网址,myWebRequest1.RequestUri但我想知道是否有任何方法可以使用比manualy解析它更好的方式获取查询字符串,我的意思是像myWebRequest1.QueryString[etc etc ]

有任何想法吗 ?

提前致谢....

c# httpwebrequest request.querystring

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

Update-Database时的实体框架4.3迁移异常

从EF 4.2升级到迁移到EF 4.3并启用迁移,重新启动Visual Studio和所有内容,每当我尝试调用Update-Database/Add-Migration时,我得到:

System.Reflection.TargetInvocationException:调用目标抛出了异常.---> System.ArgumentException:
参数不正确.(来自HRESULT的异常:0x80070057(E_INVALIDARG))
---内部异常堆栈跟踪结束---
在System.RuntimeType.InvokeDispMethod(String name,BindingFlags invokeAttr,Object target,Object [] args,Boolean [] byrefModifiers,Int32 culture ,String [] namedParameters)
位于System.RuntimeType.InvokeMember(String name,BindingFlags bindingFlags,Binder binder,Object target,Object [] providedArgs,ParameterModifier [] modifiers,CultureInfo culture,String [] namedParams),
位于System.Management.Automation. ComMethod.InvokeMethod(PSMethod方法,Object []参数)
Update-Database:调用目标抛出了异常.
在行:1 char:1
+ update-database
+ ~~~~~~~~~~~~~~~
+ CategoryInfo:OperationStopped :(异常有b ...一个调用.:String)[Update-Database] ,RuntimeException
+ FullyQualifiedErrorId:调用目标抛出了异常.,Update-Database

我尝试清理整个项目,删除ef和migration和packages文件夹并从头开始执行它仍然是同样的错误!

任何人都面临同样的错误?或者有解决方案吗?

entity-framework ef-code-first

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

在Windows窗体中切换图像

我有3张照片,每张照片都有一个彩色圆圈.这3张照片是红色,绿色和黄色.

我把它放在PictureBoxwindows窗体中.我想将这些图像从绿色切换到黄色到红色或其他.

有什么东西我可以让它们相互淡化而不是以正常方式切换它们吗?

我知道这可以很容易地使用flash/j-query完成,但我想知道我能达到多远.

使用普通窗口的Windows窗体中的类似功能.

注意:我正在使用.net框架4和Windows窗体.

c# .net-4.0 winforms

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