Ниже, кажется, работает на меня.
using System;
using System.Reflection;
public class ReflectStatic
{
private static int SomeNumber {get; set;}
public static object SomeReference {get; set;}
static ReflectStatic()
{
SomeReference = new object();
Console.WriteLine(SomeReference.GetHashCode());
}
}
public class Program
{
public static void Main()
{
var rs = new ReflectStatic();
var pi = rs.GetType().GetProperty("SomeReference", BindingFlags.Static | BindingFlags.Public);
if(pi == null) { Console.WriteLine("Null!"); Environment.Exit(0);}
Console.WriteLine(pi.GetValue(rs, null).GetHashCode());
}
}
[^,;]+
Вы не указали реализацию регулярного выражения, которую используете. У большинства из них есть метод Split
, который принимает разделители и разделяет их по ним. Вы можете использовать его с «нормальным» (без ^
) классом символов:
[,;]+
Используйте классы символов. Класс символов, начинающийся с символа вставки, будет соответствовать чему-либо, не входящему в этот класс.
[^,;]