小编Dan*_*all的帖子

在Bash中连接变量

愚蠢的问题毫无疑问,我正在尝试将变量添加到变量的中间,所以例如在PHP中我会这样做:

$mystring = $arg1 . '12' . $arg2 . 'endoffile';
Run Code Online (Sandbox Code Playgroud)

所以输出可能是20121201endoffile,我如何在linux bash脚本中实现相同的功能呢?

bash shell string-concatenation

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

结合数组内联 - LINQ

我正在从列表中的项目初始化和数组,如下所示:

MyArray[] Arrayitems = SomeOtherList
.Select(x => new MyArray[]
{
   ArrayPar1 = x.ListPar1,
}).ToArray()
Run Code Online (Sandbox Code Playgroud)

我有一个辅助列表,我想在初始化器中添加到内联中的相同数组,类似于this():

    MyArray[] Arrayitems = SomeOtherList
    .Select(x => new MyArray[]
    {
       ArrayPar1 = x.ListPar1,
    }).ToArray()
   .Join(
    MyArray[] Arrayitems = SomeOtherListNo2
    .Select(x => new MyArray[]
    {
       ArrayPar1 = x.ListPar1,
    }).ToArray()
   );
Run Code Online (Sandbox Code Playgroud)

这是可能的还是我必须在初始选择语句之前将所有内容组合在一起?

c# linq arrays

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

检查一个词典中的所有条目是否在另一词典中

我有两个字典 A 和 B,我想查看 A 中的所有条目是否都存在于 B 中。过去我使用以下方法比较列表:

var set1 = new HashSet<String>(list1);
var set2 = new HashSet<String>(list2);

return set1.SetEquals(set2);
Run Code Online (Sandbox Code Playgroud)

我想做的就是简单地使用以下方法循环字典 A 中的每个值:

dictA.TryGetValue(dictBvalue, out item)
Run Code Online (Sandbox Code Playgroud)

如果值不存在,这将在 item var 上返回 null,但这似乎有点啰嗦。

有没有一种快速有效的方法来比较词典?

谢谢。

c# compare

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

如何避免调用基类构造函数

我只是在谈论如何最好地组织这里的继承.我有一个类(下面)需要使用基本的ExportData类中的大多数类,并覆盖其中的一些类:

public class ExtendedExportData : ExportData
{

    private tData _Data;
    private ResStrings _diaStrings;

    public ExtendedExportData(tData Data, ResStrings diaStrings)
        : base(tData, diaStrings)
    {
        _tData = Data;
        _diaStrings = diaStrings;

    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下不需要的是必须调用基础构造函数,因为上面类中使用的基类方法都不需要初始化,构造函数只是在为其他(冗长)创建基类实例时才需要的.目的.

如果我删除基本构造函数我在子类构造函数上得到一个错误,说基本构造函数不接受0参数.我怎么能避免这个?

这是基类:

public class ExportData
{
    private tData _Data;
    private ResStrings _diaStrings;

    public ExportLines(tData Data, ResStrings diaStrings)
    {
        _Data = Data;
        _diaStrings = diaStrings;
    }
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

c# inheritance

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

使用反射调用类的静态方法

我试图通过反射调用静态类方法并获取其返回值,如下所示:

private SA GetData()
{
    Type type = Type.GetType("SA010");

    Object obj = Activator.CreateInstance(type);

    MethodInfo methodInfo = type.GetMethod("GetSA");

    return (SA)methodInfo.Invoke(obj, null);
}
Run Code Online (Sandbox Code Playgroud)

这是我正在调用的类和方法:

public class SA010
{
    public static SA GetSA()
    {
        //do stuff
        return SA.
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我在'type'变量上收到一个空引用异常.GetData()和SA010.GetSA()位于同一名称空间中.

任何想法为什么我可能会得到这个错误,这与它是静态的可能吗?

c# reflection

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

按 2 个小数点对字符串列表进行排序

我正在尝试按列表包含的 x 个对象之一中的值对列表进行排序。这是我需要的订单:

1
1.1
1.2
1.3
1.4
1.5
1.10
1.11
1.12
4.1
4.2
4.15
Run Code Online (Sandbox Code Playgroud)

我尝试了以下方法:

var lRetItems = lExportItems.OrderBy(d => d.linkid*);
Run Code Online (Sandbox Code Playgroud)

IEnumerable<item> lRetItems = 
from x in lExportItems
orderby x.linkid*
select x;
Run Code Online (Sandbox Code Playgroud)

*linkid = 字符串

但都没有给我我想要的顺序,因为这些方法 1.10 遵循 1.1 而不是 1.2 遵循 1.1。以下是上述方法提供的错误排序示例:

1
1.1
1.10
1.11
1.12
1.2
1.3
1.4
...
Run Code Online (Sandbox Code Playgroud)

有谁知道我如何以与第一个示例相同的方式对列表进行排序?

如果这是 1.10 的两倍,则与 1.1 相同...因此上面的顺序。但我希望字符串至少按长度排序?

有谁知道可以从这些字符串中提供我需要的顺序的方法吗?

这是一个 Rextester,显示了我根据评论尝试过的内容(失败):

http://rextester.com/JJB33165

谢谢。

c# sorting string

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

获取 DEP 设置

我需要确定 Windows DEP 是否已禁用、设置为基本 Windows 程序和服务或除我选择的程序之外的所有程序。

我一直在寻找一种方法来做到这一点,但没有取得任何成功。有办法做到这一点吗?使用 C# 开发。

c# dep

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

合并列表中的重复项

在我当前的测试项目中,我希望将所有对象合并到一个列表中,其中一个值与另一个对象中的值相同,然后我想检查这些对象下的其他值并将它们组合在一起,如下示例:

Object1
{
id = 111,
price1 = 10,
price 2 = 20
}

Object2
{
id = 222,
price1 = 10,
price 2 = 20
}

Object3
{
id = 111,
price1 = 30,
price 2 = 70
}

Object4
{
id = 444,
price1 = 15,
price 2 = 25
}
Run Code Online (Sandbox Code Playgroud)

从上面的对象 1 和对象 3 将根据其相关的“id”值进行组合,然后将它们的价格组合起来,并会导致以下对象替换列表中的对象 1 和对象 3:

NewObject
{
id = 111,
price1 = 40,
price 2 = 90
}
Run Code Online (Sandbox Code Playgroud)

最终列表将如下所示:

NewObject
{
id = 111, …
Run Code Online (Sandbox Code Playgroud)

c# linq list

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

拦截文件流......不可能?

毫无疑问,这是不可能的,但我想看看是否有人有一个巧妙的建议.我们有一个第三方程序集,它可以使用内部方法'SaveToFile'将存储在定制数据库内部的图像输出到文件,例如:

3rdParty.Scripting.ImageManager man = new 3rdParty.Scripting.ImageManager("ref");

3rdParty.Scripting.Image itemImg = man.GetImage(orderNumber);

itemImg.SaveToFile("c:\file.jpg")
Run Code Online (Sandbox Code Playgroud)

ItemImg.SaveToFile没有返回类型,只是在内部创建一个位图并将其写入文件流.我们绝对无法访问已编译的方法.

我需要做的是以某种方式拦截文件流并读取位图,我知道这可能是不可能的,但我不是绝对的专家,所以想看看是否有一种神奇的方法来做到这一点.

如果所有其他方法都失败了我将保存文件然后读回来,我只是想避免保存到磁盘,我可以直接获取数据并最终将其转换为base64字符串值.

c#

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

Winforms中使用的STA线程,但作为控制台应用程序执行时不使用

我有一个程序集,该程序集在第三方的沙箱中的STA线程下运行,在该线程中,我创建了一个双工WCF客户端,该客户端需要在原始STA线程上执行方法。

当前的实现工作正常,在Duplex回调中,我按如下方式获取STA线程的同步上下文,并将其用于回发到STA线程:

private readonly SynchronizationContext _syncContext = AsyncOperationManager.SynchronizationContext;
Run Code Online (Sandbox Code Playgroud)

所有这些都在STA线程中初始化的WinForm中运行,太好了...但是我需要移动WCF双工代理,以便它在主STA线程中的类实例下运行。当我删除winform时,我最终从上述SynchronizationContext获得了一个全新的线程。

澄清:

Winforms:-

  • 在STA线程上启动WCF双工代理-ManagedThreadId = 1
  • 从服务器接收双工回调-ManagedThreadId = 5
  • 使用AsyncOperationManager.SynchronizationContext发布到回调事件方法-ManagedThreadId = 1

没有WinForm(类实例):-

  • 在STA线程上启动WCF双工代理-ManagedThreadId = 1
  • 从服务器接收双工回调-ManagedThreadId = 6
  • 使用AsyncOperationManager.SynchronizationContext发布到回调事件方法-ManagedThreadId = 11

在线程11而不是1上执行意味着我的方法无法在沙箱中正确执行,除了在winform下运行之外,变量之间的代码没有区别。有谁知道我如何在不使用winform的情况下保持STA主线程中双工回调方法的执行?

c# wcf multithreading callback winforms

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