Tag: c#

为什么在复制之后原始对象发生了变化,而不使用ref参数?

在工作中,我们遇到了一个问题,在我们通过方法发送副本后,原始对象发生了变化。 我们确实通过在原始课程中使用IClonable找到了解决方法,但我们无法找到它为什么会在第一时间发生。 我们编写了这个示例代码来重现问题(类似于我们的原始代码),并希望有人能够解释它为什么会发生。 public partial class ClassRefTest : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { var myclass = new MyClass(); var copy = myclass; myclass.Mystring = “jadajadajada”; Dal.DoSomeThing(copy); lit.Text = myclass.Mystring; //Text is expected to be jadajadajada, but ends up to be referenced } } public class MyClass { public string Mystring { […]

将大量文本写入文本框

我正在将一个包含大量格式化文本的日志写入.net windows窗体应用程序中的文本框。 一旦数据超过几兆,它就会很慢。 因为我追加字符串必须每次重新分配吗? 我只需要将值设置为文本框一次,但在我的代码中我正在line+=data数万次。 有更快的方法吗? 也许一个不同的控制? 我可以使用链接列表字符串类型吗?

将大数字(或字符串)压缩为小值

我的ASP.NET页面有以下查询字符串参数: …?IDs=1000000012,1000000021,1000000013,1000000022&… 在这种情况下, IDs参数将始终具有由某个东西分隔的数字。 目前有4个数字,但通常它们在3到7之间。 现在,我正在寻找将每个大数字从上面转换为最小可能值的方法; 具体压缩IDs查询字符串参数的值。 压缩每个数字算法或压缩IDs查询字符串参数的整个值都是受欢迎的。 编码或解码不是问题; 只压缩值IDs查询字符串参数。 为IDs创建一些唯一的小值,然后从某些数据源检索其值超出范围。 是否有算法将这些大数字压缩为小值或者将IDs查询字符串参数的值压缩在一起?

如何让silverlight从MySQL获取数据

我在Silverlight中编写了一个小型的hello world测试应用程序,我想在Linux / Apache2服务器上托管。 我希望数据来自MySQL(或其他一些兼容Linux的数据库),以便我可以数据绑定到数据库中的内容。 我已经设法通过使用MySQL Connector / .NET来实现它 : MySqlConnection conn = new MySqlConnection(“Server=the.server.com;Database=theDb;User=myUser;Password=myPassword;”); conn.Open(); MySqlCommand command = new MySqlCommand(“SELECT * FROM test;”, conn); using (MySqlDataReader reader = command.ExecuteReader()) { StringBuilder sb = new StringBuilder(); while (reader.Read()) { sb.AppendLine(reader.GetString(“myColumn”)); } this.txtResults.Text = sb.ToString(); } 如果我给已发布的ClickOnce应用程序完全信任(或至少是SocketPermission)并在本地运行它,这可以正常工作 。 我希望这在服务器上运行,我无法让它工作,总是以权限exception结束(不允许SocketPermission)。 数据库与Silverlight应用程序托管在同一服务器上,如果这有任何区别的话。 编辑好的,我现在明白为什么在客户端应用程序中显示数据库凭据是一个坏主意(显然)。 人们如何做到这一点呢? 如何保护代理Web服务,以便以安全的方式将数据传入和传出客户端/数据库? 网上有没有任何例子? 当然,我不能成为第一个使用数据库为Silverlight应用程序提供支持的人?

Oracle.DataAccess.Client依赖项

首先,我想使用Oracle.DataAccess.dll来使用OracleBulkCopy 。 我想知道我需要能够从数据库中读取的所有dll,然后在Oracle中执行批量复制。 目前,我们只使用一个dll来执行数据库的所有读取,我们使用的是Oracle.ManagedDataAccess.Client 。 但我不能用它来执行bulkCopy。 我不想为用户安装ODP.NET,我想直接在程序中包含dll。 所以我想知道能够在32位和64位中使用Oracle.DataAccess.dll所需的最低dll。 我知道有一些关于这个的老post,但它很安静,列出的dll已经过时了。 我无法找到其中一些事件。 我为ODAC12安装了ODP.net,我在这篇文章中检索了所有列出的dll。 我也尝试过这篇文章 。 列出的dll指出版本11。 我做了一个虚拟项目,打开一个连接,读取一个表并在另一个表中进行批量处理。 我从项目根目录中的post中复制了列出的dll,并在项目中包含了Oracle.DataAccess.dll 。 当我以64位运行我的程序时,我收到以下错误: 无法加载文件或程序集’Oracle.DataAccess,Version = 4.121.2.0,Culture = neutral,PublicKeyToken = 89b483f429c47342′ 当我以32位运行它时,我收到此错误: 无法加载DLL’OraOps12.dll’:找不到指定的模块。 (HRESULTexception:0x8007007E)“ 我包括的dll是: OCI.DLL OCIW32.DLL Oracle.DataAccess.dll orannzsbb12.dll oraocci12.dll oraociei12.dll OraOps12.dll

如何在C#中validation图像文件格式

有没有人知道脚本来validation给定图像的文件格式是什么。 目前我正在填充图像对象,查看它的高度,宽度和分辨率。 我没有看到解释文件格式的此对象的任何特定属性。 我想检查jpg,AI,PSD,High Jes Jpg,Bitmap和Tiff。 这是我目前的脚本: protected bool IsValidImage(HttpPostedFileBase file, string fileName) { //verify that the image is no more than 648 wide and 648 pixels tall Image imgPhoto = Image.FromStream(file.InputStream); if (imgPhoto.Width > 648) return false; if (imgPhoto.Height > 648) return false; if (imgPhoto.HorizontalResolution != 72 || imgPhoto.VerticalResolution != 72) return false; return […]

如何在我的方法的指针中替换指向重写(虚拟)方法的指针? (发布x64和x86)

问题动态替换C#方法的内容? 我从@ Logman那里得到了很好的回应。 我没有资格在评论中提出这个问题。 using System; using System.Reflection; using System.Runtime.CompilerServices; namespace ReplaceHandles { class Program { static void Main(string[] args) { Injection.replace(); Target target = new Target(); target.test(); Console.Read(); } } public class Injection { public static void replace() { MethodInfo methodToReplace = typeof(Target).GetMethod(“test”, BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public); MethodInfo methodToInject = typeof(Target2).GetMethod(“test”, […]

UDP:从所有网络接口读取数据

我有以下代码来读取来自网络的多播消息,用于指定的IP +端口 private static void ReceiveMessages(int port, string ip, CancellationToken token) { Task.Factory.StartNew(() => { using (var mUdpClientReceiver = new UdpClient()) { var mReceivingEndPoint = new IPEndPoint(IPAddress.Any, port); mUdpClientReceiver.ExclusiveAddressUse = false; mUdpClientReceiver.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true); mUdpClientReceiver.ExclusiveAddressUse = false; mUdpClientReceiver.Client.Bind(mReceivingEndPoint); mUdpClientReceiver.JoinMulticastGroup(IPAddress.Parse(ip), 255); while (!token.IsCancellationRequested) { byte[] receive = mUdpClientReceiver.Receive(ref mReceivingEndPoint); Console.WriteLine(“Message received from {0} “,mReceivingEndPoint); } } […]

如何动态组合条件?

此问题是对已经回答的问题的增强如何在列表中应用多个过滤条件(同时)? 在上面提到的问题中,我们有一个方法,在所有规范上应用AND运算符。 这是通过在规范上使用LINQ All运算符来实现的。 public static List GetProductsUisngAndFilters(List productList, List<Specification> productSpecifications) { return productList.Where(p => productSpecifications.All(ps => ps.IsSatisfiedBy(p))).ToList(); } 我们需要创建一个能够执行AND , OR和NOT规范(以及它的混合)的新方法(GetProductsUisngDynamicFilters)。 知道怎么解决这个问题吗? 过滤方法 public static class ProductFilterHelper { public static List GetProductsUisngAndFilters(List productList, List<Specification> productSpecifications) { return productList.Where(p => productSpecifications.All(ps => ps.IsSatisfiedBy(p))).ToList(); } } 客户 class Program { static void Main(string[] args) { List […]

LINQy检查集合中的任何对象是否具有相同属性值的方法

我有一个具有属性Id的类代理 给定一组Agent,我需要检查它们中是否有任何重复的ID。 我目前正在使用哈希表执行此操作,但我正在尝试使用Linq-ified,这样做的好方法是什么?