我正在生成带有运行时确定的类型参数的List <T>。我想调用ForEach方法来遍历列表中的项目:
//Get the type of the list elements
Type elementType = GetListElementType(finfo);
Type listType = Type.GetType("System.Collections.Generic.List`1["
+ elementType.FullName + "], mscorlib", true);
//Get the list
var list = getList.Invoke(null, new Object[] { finfo.GetValue(myObject) });
MethodInfo listForEach = listType.GetMethod("ForEach");
//How do I do this? Specifically, what takes the place of 'x'?
listForEach.Invoke(list, new object[] { delegate ( x element )
{
//operate on x using reflection
}
});
Run Code Online (Sandbox Code Playgroud)
给定与运行时生成的列表类型中包含的ForEach方法相对应的MethodInfo,使用匿名方法调用它的正确方法是什么?上面是我的第一个步骤,但是不知道如何声明匿名方法的参数类型。
在一组大文件中,我需要\用" \\" 替换所有出现的" ".我想将Perl用于此目的.现在,我有以下内容:
perl -spi.bak -e '/s/\\/\\\\/gm' inputFile
Run Code Online (Sandbox Code Playgroud)
我向你建议了这个命令,但是它导致inputFile没有变化(更新的时间戳除外).考虑到问题可能是\"s"没有被空白包围,我试过了
perl -spi.bak -e '/s/.\\./\\\\/gm' inputFile
Run Code Online (Sandbox Code Playgroud)
同样,这对文件没有影响.最后,我以为我可能会丢失一个分号,所以我尝试了:
perl -spi.bak -e '/s/.\\./\\\\/gm;' inputFile
Run Code Online (Sandbox Code Playgroud)
这也没有效果.我知道我的文件包含" \",例如在以下行中:
("C:\WINDOWS\system32\iac25_32.ax","Indeo audio)
Run Code Online (Sandbox Code Playgroud)
我不确定正则表达式是否存在问题,或者我调用Perl的方式是否有问题.我对正则表达式有基本的了解,但对于Perl来说,我是一个绝对的初学者.
这里有什么明显的错误吗?我注意到的一件事是命令返回得很快,尽管inputFile的大小约为10MB.
我在c#中编写一个简单的正则表达式来找到反斜杠之前或之后没有任何反斜杠:
Regex reg = new Regex(".*(?<!\\)\\(?!\\).*");
Run Code Online (Sandbox Code Playgroud)
但是,这个语句会生成一个ArgumentException:"parsing".(?" - 还不够)"
组括号似乎匹配.谁能发现问题?
是否可以通过 C# 中的 TCPListener 获取远程客户端的 MAC 地址?
using System;
using System.Net;
using System.Net.Sockets;
using System.IO;
using System.Text;
namespace TCPserver
{
class Program
{
private const int BUFSIZE = 32;
static void Main(string[] args)
{
if (args.Length > 1) // Test for correct of args
throw new ArgumentException("Parameters: [<Port>]");
int servPort = (args.Length == 1) ? Int32.Parse(args[0]) : 7;
TcpListener listener = null;
try
{
// Create a TCPListener to accept client connections
listener = new TcpListener(IPAddress.Any, servPort);
listener.Start();
}
catch …Run Code Online (Sandbox Code Playgroud)