Tag: .net

C#通用约束问题

我收到以下错误。 类型’Test.ICacheProvider’不能在generics类型或方法’StorageManager.Test.IFileInfo’中用作类型参数’TStorageProvider’。 没有从“StorageManager.Test.ICacheProvider”到“StorageManager.Test.IStorageProvider”的隐式引用转换。 这个程序设计结构有什么不对吗? 计划: // Cache Provider Classes public interface ICacheProvider { } public class BaseCacheProvider : ICacheProvider { } public class DerivedCacheProvider : BaseCacheProvider { } // Storage Classes public interface IStorageProvider where TCacheProvider : ICacheProvider { } public interface BaseStorageProvider : IStorageProvider where TCacheProvider : ICacheProvider { } public interface DerivedStorageProvider : […]

使用entity framework中的属性映射多对多关系

我总是使用Attributes将我的实体的属性映射到它们对应的列。 这是一个例子: [Table(“news_entries”)] public class News { [Key] public int Id { get; set; } [Column(“d_date”)] public DateTime Date { get; set; } [Column(“m_text”)] public string Text { get; set; } [Column(“id_user”)] public int UserId { get; set; } [ForeignKey(“UserId”)] public User User { get; set; } } 但我仍然不知道,我如何映射多对多关系,其中表和列名称与属性不匹配。 我知道我可以在我的DbModelBuilder中使用DbContext ,但我不想在我的实体类之外进行映射。 是否有可能将这些关系映射到属性?

在dotnet中排序reflection请求

当我在类型上调用GetProperties()时,属性在源代码中编写时被排序。 这非常方便但我的问题是,如果这是一个保证的行为,或者这可能会根据运行时版本和环境而改变。 有谁知道这件事吗?

如何使用C#从派生类中的构造函数中捕获exception?

我想知道如何使用C#从派生类中的构造函数中捕获exception。 这样的东西: public class MyClassA { public MyClassA() { //Do the work if (failed) { throw new Exception(“My exception”); } } } public class MyClassB : MyClassA { public MyClassB() { //How to catch exception from a constructor in MyClassA? } }

entity frameworkISNULL在Where条件下

我在SQL Server中有一个查询: SELECT * FROM MyTable t WHERE ISNULL(t.Status,”) = ” 我如何在entity framework中做到这一点? 编辑:哦对不起,我的代码就像 WHERE ISNULL(t.Status,”) = ”

taglib-sharp中是否有与Label / Publisher等效的字段?

我正在尝试使用Taglib-sharp更新标签/发布者字段,但我无法使用对象浏览器在其对象层次结构中的任何位置看到它。 我搜索了谷歌和文档,它看起来像是一个没有照顾的领域。 在我寻找可以编辑这些字段的替代方案(可以任何人建议吗?)之前,我想我会有最后一个破解,并在StackOverflow社区内询问谁熟悉TagLib-sharp有更明智的意见? 提前致谢, 弗朗西斯 更新:我已经调查了其他库,如mpg123和UltraID3Lib,但它们似乎有相同的限制。

递归搜索文件/文件夹结构

我正在尝试为返回文件和文件夹列表的Web服务构建递归搜索function。 我创建了两个方法,因此它们充当递归搜索,首先获取顶级内容,然后将任何文件添加到fileList,将任何子文件夹添加到subFoldersList。 我们传入访问级别(在我们的例子中为root),然后传递您想要信息的路径。 如果找到任何文件夹,则删除顶部文件夹,因为它已开始搜索该文件夹。 然后它调用processDirectories方法,该方法将getFiles传递回新的路径位置,重新开始该过程。 现在用于测试我的文件夹结构如下。 当它将第二个文件(profilepic.png)添加到列表中时。 我收到错误“集合已被修改;枚举操作可能无法执行”。 导致此错误的原因是什么? Photos picture1.png TestFolder profilepic.png 我的代码: public static List fileList = new List(); public static List subFolderList = new List(); static void processDirectories(string access, string Folder) { getFiles(access, Folder); } static void getFiles(string access, string Folder) { var accessToken = new OAuthToken(token, secret); var api = new […]

对于64位应用程序,.NET使用WSAStartup是安全的吗?

对于64位应用程序,.NET Framework版本与WSAData结构的本机Win32版本之间存在不匹配,因为字段的顺序不同。 我复制了.NET版本,用于我们基于C#的产品,同事担心我的内存损坏。 使用DllImport / PInvoke时,由于这种不匹配,是否存在内存损坏的风险? 将本机版本封送到托管版本时是否存在无效内存访问风险? 我们假设我并不关心实际访问生成的WSAData对象的字段。 我只是想确定我对WSAStartup的调用不会破坏内存或使应用程序崩溃。 这是WinSock2.h中的本机C ++版本。 请注意,成员的顺序在64位与32位之间是不同的。 WSADESCRIPTION_LEN为256,WSASYS_STATUS_LEN为128。 typedef struct WSAData { WORD wVersion; WORD wHighVersion; #ifdef _WIN64 unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; #else char szDescription[WSADESCRIPTION_LEN+1]; char szSystemStatus[WSASYS_STATUS_LEN+1]; unsigned short iMaxSockets; unsigned short iMaxUdpDg; char FAR * lpVendorInfo; #endif } WSADATA, […]

WCF:StackoverFlowexception

我在尝试servageize .NET ServiceController类时遇到exception。 当它为null时序列化很好但是一旦我填充它我得到一个stackoverflowexception。 这样可行: [DataMember] public ServiceController MyServiceController { get { return null; } } 但是这会给出错误“System.ServiceProcess.dll中发生类型’System.StackOverflowException’的未处理exception”: public class TestClass { private ServiceController _serviceController; [DataMember] public ServiceController MyServiceController { get { return ServiceController.GetServices()[0]; } } 奇怪的是,日志中根本没有错误。 当出现错误时我可以在日志中看到它,所以不是因为我的日志不能正常工作。 这是我的配置文件 这是我的服务界面 [ServiceContract] public interface IRdbmsService { [OperationContract] TestClass GetServiceControllerList(); } 实施是: public TestClass GetServiceControllerList() { return new […]

带有活动事件处理程序的未引用对象的垃圾收集

在以下程序中…… using System; class Program { static Parent parent; static void Main( string[] args ) { parent = new Parent(); // The program hereafter runs for a long time and occasionally // causes parent.SomeEvent to be raised. } } class Parent { public event EventHandler SomeEvent; public Parent() { new Handler( this ); } } […]