小编Him*_*ere的帖子

C#Linq All&Any在空白数组上的工作方式不同

考虑使用空白数组的linq示例:

Any()回报false,因为大于零,没有号码怎么能All()返回true输送所有的数字大于零?

var arr = new int[] { };
Console.WriteLine(arr.Any(n => n > 0)); //false 
Console.WriteLine(arr.All(n => n > 0)); //true 
Run Code Online (Sandbox Code Playgroud)

c# linq

36
推荐指数
4
解决办法
2083
查看次数

保留CodeDOM中成员的序列化顺序

我知道我们可以按照MSDN上所述的members-collection中的顺序强制生成类中的成员.但是,我寻找一些代码,它们还添加了一个序列化属性,提供了这些成员的顺序.所以这就是我希望生成器创建的内容:

class MyClass
{
    [XmlElement("TheProperty", Order = 0]
    public int MyProperty { get; set; }
    [XmlElement("AnotherProperty", Order = 1]
    public int AnotherProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

目前,我有一种方法可以循环DOM中所有类型的成员,并将该属性附加到CustomAttributescurrent(public)属性或字段的-member .

var types = code.Types.Cast<CodeTypeDeclaration>().Where(x => !x.IsEnum);
foreach (var members in types.Select(x => x.Members.Cast<CodeTypeMember>()))
{
    int i = 0;
    var propertiesAndFields = members.Where(x => (
            x.Attributes & MemberAttributes.Private) != MemberAttributes.Private
            && (x is CodeMemberField || x is CodeMemberProperty));
    foreach (CodeTypeMember member in propertiesAndFields)
    {
        var attr …
Run Code Online (Sandbox Code Playgroud)

c# codedom xml-serialization

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

Java反编译器插件无法正常工作

我安装了JD-eclipse-plugin.我想在jar文件中反编译类.因此,我在Project-Explorer中选择jar文件,然后单击菜单中的Decompiler.然而,两个反编译器(JAD和JD-core)都是灰色的.

我还尝试了这个博客中关于AVAJAVA Web Tutorials的步骤.我猜博客有点过时了,不过我在Windows中可以看到 - >首选项 - > Java - > Decompiler,Jad正确设置.但是在首选项 - >常规 - >编辑器 - >文件关联中找不到JD-eclipse,如下图所示.JD-Eclipse的插件.现在我右键单击Project-Explorer中的jar文件,但是没有这样的"附加源文件".

我错过了设置插件的任何内容吗?

编辑:我使用以下设置:Eclipse:Mars.1 Release(4.5.1); JadClipse 4.0.0; JDK 1.8

EDIT2:忘记提到我使用Tomcat并希望深入了解库/WebContent/WEB-INF/lib.这不起作用,我不能进一步崩溃jar文件.

java eclipse jd-eclipse

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

Linq用于嵌套循环

我有一个循环如下:

foreach(x in myColl) 
{
    foreach(var y in x.MyList) 
    {
        result.Add(x.MyKey + y)
    }
}
Run Code Online (Sandbox Code Playgroud)

这意味着在我的内部循环中,我需要访问当前外部元素的属性.

我正在寻找LINQ声明,但我不确定.我试过用它

result = myColl
    .SelectMany(x => x.MyList)
    .SelectMany(x => /* how to get the key of the outer loop here */ + x)
Run Code Online (Sandbox Code Playgroud)

c# linq

13
推荐指数
3
解决办法
6284
查看次数

启用本机代码调试以深入COM对象

我有一些代码使用COM公开的第三方库(ArcObjects).所以例如有-interface IGeometry.

IGeometry geometry = GetGeometry();
Run Code Online (Sandbox Code Playgroud)

现在,当我想查看对象成员时,我打开了一个QuickWatch:

在此输入图像描述

我已经阅读了几个问题,这些问题都指向Visual Studio 2015中的"启用本机代码调试"选项.我已经启用该选项无济于事.

如何让调试器公开COM对象的成员?

编辑:当使用VS2010和.NET 3.5时,这适用:

在此输入图像描述

c# com arcobjects visual-studio-2015

12
推荐指数
2
解决办法
895
查看次数

如何管道多个sql-和py-scripts

我从github gtfs_SQL_importer复制了以下代码:

cat gtfs_tables.sql \
  <(python import_gtfs_to_sql.py path/to/gtfs/data/directory) \
  gtfs_tables_makeindexes.sql \
  vacuumer.sql \
  | psql mydbname
Run Code Online (Sandbox Code Playgroud)

我试图在Windows上运行它,并用cat等效的windows 替换对UNIX命令的调用,type这应该与is-there-replacement-for-cat-on-windows类似.

但是,当我执行该代码时,我收到一些错误:

文件名,目录或文件系统的语法是错误的.

所以我试图将管道文件的数量限制为仅将对python的调用和对以下内容的调用结合起来psql:

type <(C:/python27/python path/to/py-script.py path/to/file-argument) | psql -U myUser -d myDataBase
Run Code Online (Sandbox Code Playgroud)

产生相同的错误.

但是,当我单独执行python脚本时,它按预期工作:

C:/python27/python path/to/py-script.py path/to/file-argument
Run Code Online (Sandbox Code Playgroud)

因此,我假设使用错误导致type将脚本的结果直接传递给psql.

有谁知道正确的语法?

编辑:为了确保问题与未找到的文件无关,我使用了命令中所有参数的绝对路径,除了typepsql-command(它们都通过%PATH%-variable 处理).

python pipeline windows-shell

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

为什么我们不能用访问器引发事件?

为什么我们不能使用自定义实现来引发事件,而没有它们可以实现?看到这段代码:

public class Program
{
    private EventHandler myEvent;
    public event EventHandler MyEvent
    {
        add { myEvent += value; }
        remove { myEvent -= value; }
    }

    public event EventHandler AnotherEvent;

    public static void Main()
    {
        var target = new Program();
        target.MyEvent(null, null);       // ERROR CS0079
        target.AnotherEvent(null, null);  // compiles
    }
}
Run Code Online (Sandbox Code Playgroud)

你看到我的班级都宣布了这两个事件.虽然target.AnotherEvent(...)编译得很好,target.MyEvent(...)但不是:

Event MyEvent只能出现在+ =或 - =的左侧.

我知道一个事件只是一个带有add-and-remove方法的委托.因此AnotherEvent编译器将其转换为add-and-remove-method:

private EventHandler _AnotherEvent;
public event EventHandler AnotherEvent
{ 
    add { _AnotherEvent += value; }
    remove { …
Run Code Online (Sandbox Code Playgroud)

c# events

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

序列化具有相同名称但不同命名空间的类型

I\xc2\xb4m 使用 SGen 为程序集中的类型创建 XmlSerilaization 程序集。以下是该程序集的简化代码示例:

\n\n
namespace ConsoleApplication1\n{\n    public class Program\n    {\n        public MyNS2.Flurstueck Flurstueck = new MyNS2.Flurstueck();\n    }\n}\n\nnamespace ConsoleApplication1.MyNS1\n{\n    [XmlRoot("Flurstueck1")]\n    public class Flurstueck\n    {\n        public string kz1 = "kz1";\n    }\n}\nnamespace ConsoleApplication1.MyNS2\n{\n    [XmlRoot("Flurstueck2")]\n    public class Flurstueck\n    {\n        public string kz2 = "kz2";\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

当我使用该项目进行编译并启用序列化程序集的创建时,我收到“反映类型 ConsoleApplication1.MySN1.Flurstueck 时出错”。显然我们这里有命名冲突,因为类MyNS1.FlurstueckMyNS2.Flurstueck具有相同的名称。这当然可以编译,因为两种类型都有不同的命名空间。创建序列化程序集时失败。

\n\n

但是,当我手动将该类型序列化到文件中并再次反序列化它(因此无需创建序列化程序集并让序列化及时发生)时,它会起作用:

\n\n
XmlSerializer ser = new XmlSerializer(typeof(Program));\nusing (TextWriter writer = new StreamWriter(path))\n{\n    ser.Serialize(writer, new Program());\n}\n\nusing (TextReader reader = new StreamReader(path))\n{\n    var o = ser.Deserialize(reader);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我怎样才能让它与 Sgen …

c# namespaces xml-serialization

5
推荐指数
0
解决办法
333
查看次数

使用多个属性创建对象集

我有一个具有多个布尔(和整数)属性的对象.我想创建一个具有许多不同属性的对象集合,以获得用于测试的良好数据集.

例如

public class A
{
     public int value {get; set;} //want to try beetween 0 and 5
     public bool foo {get; set;}
     public bool bar {get; set;}
     public bool boo {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

对于这个例子,我喜欢有一个6*2*2 = 24 elementw的列表,其中value= foo0/1/2/3/4/5 ,= true/false,bar= true/false,但boo始终为false.

我可以使用24行代码来做到这一点.但是它很多,如果我再增加一个bool,那么它的行数就会增加一倍.

我可能每个属性使用一个循环,但我不认为这是一个有太多嵌套循环的好方法.我也可以通过反思来做到这一点,但我认为这是太多的工作,不是吗?

我认为还有另一种方法可以做得更好,但我找不到它.

c#

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

不能有两个具有相同签名但不同通用约束的方法

我有这个方法:

public IEnumerable<MyType> DoSomething<TResult>(Func<MyType, TResult> func) 
    where TResult : AnotherType
Run Code Online (Sandbox Code Playgroud)

现在我想要这个方法也出现了IEnumerable<AnotherType>.所以我写了这个,显然没有编译:

public IEnumerable<MyType> DoSomething<TResult>(Func<MyType, TResult> func) 
    where TResult : IEnumerable<AnotherType>
Run Code Online (Sandbox Code Playgroud)

我得到编译器错误:

已经声明具有相同签名的成员

我读了具有相同签名的成员,该签名已经定义了不同的类型约束,它们使用另一个返回类型处理成员 但是在我的例子中,我没有区分方法return-type,而是在它的param-list中,它Func<MyType, TResult>首先Func<IEnumerable<MyType>, TResult>在第二个和第二个.但是编译器无法处理此问题.

还有另一种方法,而不是第二个例子的另一个方法名称?

c# generics

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