可访问性不一致:返回类型比方法C#更难访问

好的,所以这真的很奇怪。 我有一个私人成员,我想将它用于Form2。 我已经创建了一个公共静态方法,因此我可以将该成员转换为Form2。 这是我的代码: private static AppController appController; private BreadRepository breadRep; private CakeRepository cakeRep; private SandwichRepository sandwichRep; public Form1() { InitializeComponent(); breadRep = new BreadRepository(); cakeRep = new CakeRepository(); sandwichRep = new SandwichRepository(); appController = new AppController(breadRep , sandwichRep, cakeRep); } public static AppController getController() { return appController; } 我试图从Form1公开appController,但我得到更多的错误。 现在我明白了: 可访问性不一致:返回类型’exemplu_map.controller.AppController’比方法’exemplu_map.Form1.getController()’更难访问任何想法? 更新: 这是我的AppController类: class […]

关于结构的问题

MSDN说,一个16字节或更少的类将更好地作为结构[引证]处理 。 这是为什么? 这是否意味着如果一个结构超过16个字节,它的效率低于一个类或它是否相同? 你如何确定你的class级是否在16字节以下? 是什么限制了结构体像一个类一样? (除了禁止无参数构造函数)

如何根据动态字段名引用Linq中的字段

首先,为糟糕的问题标题道歉 – 不完全确定我是否正在问正确的事情。 通常我可以执行以下操作来访问字段: MyTables table = dc.MyTables.SingleOrDefault(p => p.id == someId); somevalue = table.samplefield; 在这种情况下,变量somevalue最终将具有字段samplefield的值。 现在我有一个场景,我想填充一个变量,但我不知道设计时表字段的名称。 但是,我确实在字符串中包含此字段名称。 因此可以使用此字符串获取值吗? 希望这是有道理的!

C#Regex性能非常慢

我是正则表达式主题的新手。 我想用以下正则表达式解析日志文件: (?(.*?))[|](?(.*?))[|](?(.*?))[|](?[1-3])[|](?(.*?))[|][|][|](?(.*?))[|][|](?(.*?))[|](?(.*)) 日志行如下所示: 2001.07.13 09:40:20|1|SomeSection|3|====== Some log message::Type: test=sdfsdf|||.\SomeFile.cpp||60|-1 带appr的日志文件 3000行需要很长时间来解析它。 你有一些提示来加快表现吗? 谢谢… 更新:我使用正则表达式,因为我使用不同的日志文件,不具有相同的结构,我使用它: string[] fileContent = File.ReadAllLines(filePath); Regex pattern = new Regex(LogFormat.GetLineRegex(logFileFormat)); foreach (var line in fileContent) { // Split log line Match match = pattern.Match(line); string logDate = match.Groups[“time”].Value.Trim(); string logLevel = match.Groups[“level”].Value.Trim(); // And so on… } 解: 谢谢你的帮助。 我用以下结果测试了它: 1.)只添加了RegexOptions.Compiled: […]

什么是最好的.NET音频压缩库?

我正在为.NET寻找一个好的音频压缩库。 使用MP3的任何东西都已经出局(因为许可问题)。 基本上我只需要能够将常规WAV音频数据压缩成某种格式,然后解压缩回WAV。 最好是代码都是.NET(C#或VB.NET),但我认为这不太可能。 它应该是无损的或相对无损的(最好是192个MP3,最好是),压缩比至少要好到4:1。 我更喜欢基于缓冲区的API,但基于文件的API也可以。 有谁知道这样的事情?

如何使用AppDomain限制静态类的范围以便线程安全使用?

我被一个架构不佳的解决方案所困扰。 它不是线程安全的! 我在解决方案中有几个共享类和成员,在开发过程中一切都很酷…… BizTalk已经沉没了我的战舰。 我们使用自定义BizTalk适配器来调用我的程序集。 适配器正在调用我的代码并并行运行,所以我假设它在同一个AppDomain下使用多个线程。 我想做的是让我的代码在自己的AppDomain下运行,这样我所遇到的共同问题就不会相互混淆。 我有一个非常简单的类,BizTalk适配器实例化然后运行Process()方法。 我想在我的Process()方法中创建一个新的AppDomain,所以每次BizTalk都旋转另一个线程时,它将拥有自己的静态类和方法版本。 BizTalkAdapter代码: // this is inside the BizTalkAdapter and it is calling the Loader class // private void SendMessage(IBaseMessage message, TransactionalTransmitProperties properties) { Stream strm = message.BodyPart.GetOriginalDataStream(); string connectionString = properties.ConnectionString; string msgFileName = message.Context.Read(“ReceivedFileName”, “http://schemas.microsoft.com/BizTalk/2003/file-properties”) as string; Loader loader = new Loader(strm, msgFileName, connectionString); loader.Process(); EventLog.WriteEntry(“Loader”, […]

调用SendMessage(P / Invoke)会一直崩溃

我不得不写一个与第三方程序通信的应用程序( 美国在线 ,对不起。:() 做了大量的研究我发现了一些使用P / Invoke做到这一点的方法,并且在大多数情况下它可以正常工作,但它会在随后的试验中崩溃,特别是使用SendMessage 。 我正在概述下面的崩溃代码。 所有这些都是从旧的,旧的Visual Basic文件移植到.NET 。 这是古老的,我知道如果它不可行 – 我只是希望有一种比Visual Basic 4.0更好的方法来完成这项工作。 [DllImport(“kernel32.dll”, SetLastError = true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool CloseHandle(IntPtr hObject); [DllImport(“user32.dll”, SetLastError = true)] public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); [DllImport(“user32.dll”, SetLastError = true)] public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string […]

如何在Dynamic LINQ中使用Contains时动态键入Cast到字符串?

我想使用动态LINQ查询来搜索类中所有属性中的一些文本。 我正在使用以下函数来创建表达式。 我正在将属性名称和搜索文本传递给方法。 在该方法中,如果属性类型是String,那么它工作正常。 如果属性类型是int,DateTime,GUID。 然后它不起作用。 我们知道Contains方法只用于元素数组或字符串。 我认为属性的值应该输入到字符串。 那怎么办呢? 带解释的解决方案是完整的。 我收集了这个代码。 public static Expression<Func> ContainsExp(string propertyName, string contains) { var parameterExp = Expression.Parameter(typeof(T), “type”); var propertyExp = Expression.Property(parameterExp, propertyName); MethodInfo method = typeof(string).GetMethod(“Contains”, new[] { typeof(string) }); var someValue = Expression.Constant(contains, typeof(string)); var containsMethodExp = Expression.Call(propertyExp, method, someValue); return Expression.Lambda<Func>(containsMethodExp, parameterExp); }

使用C#从USB读取数据?

我不想读串口或其他可能的简单快捷方式。 我想知道如何使用C#读取笔记本电脑中的USB端口。 无论您是建议网站还是解释流程,我都将非常感谢您的帮助

C#正则表达式,不包括字符串

我有一个字符串的集合,我想要的正则表达式是收集所有开始与http .. HREF = “http://www.test.com/cat/1-one_piece_episodes/的” href = “http://www.test.com/cat/2-movies_english_subbed/” HREF =“HTTP://www.test的.com /猫/ 3-english_dubbed / “HREF =” http://www.exclude.com” 这是我的正则表达式模式.. href=”(.*?)[^#]” 并返回此 href=”http://www.test.com/cat/1-one_piece_episodes/” href=”http://www.test.com/cat/2-movies_english_subbed/” href=”http://www.xxxx.com/cat/3-english_dubbed/” href=”http://www.exclude.com” 什么是排除最后一场比赛的模式..或排除内部具有排除域的匹配,如href =“http://www.exclude.com” 编辑:多次排除 href=”((?:(?!”|\bexclude\b|\bxxxx\b).)*)[^#]”