Tag: 方法

如何将包含某些属性的custom-class类型的未知对象列表传递给方法?

我正在创建一个databasehelper类,其中包含访问SQLCE数据库的方法。 我想使用相同的方法使用包含与不同表中的字段匹配的属性的不同类来读取行。 要使用的类是在运行时确定的,我想将包含类中对象的列表传递给方法,并获取属性名并使用它们来读取数据库。 会非常方便,因为我可以将它用于我的所有(SQLCE-)数据库。 (我更新了错误的代码以便在这里提供解决方案) #region ReadData ///———————————————————————- /// /// Reads datarows from database and adds them to list. /// /// List containing objects with properties. /// Table in database. /// Substring of SQL-statement that follows ‘WHERE’. /// Connectionstring. /// true if successfull ///———————————————————————- public static bool ReadData(List data, string table, string search, string connect) […]

如何在C#中的类的构造函数中生成随机数

我知道在C#中的类的构造函数中调用一个方法不是一个好习惯,但我坚持一些奇怪的东西。 我的问题是,当我创建一个类的对象时,我需要在对象中使用随机数分配一个字段。 例如 class RandomNumberHandler { private int randomNumber; public RandomNumberHandler() { this.randomNumber = GenerateRandomNumber(); } private int GenerateRandomNumber() { return (new Random()).Next(3000) + 1000; } } 在我的情况下,我需要一个四位数字。 我想在我创建对象的类中生成随机数并将其作为参数传递给构造函数,但在另一个类中生成随机数似乎不是一个好主意,因为我试图实现强大的凝聚力对于我的课程。 我正在为我在大学的“高质量代码”课程这样做,我正在寻找最好的方法。 欢迎任何想法如何做到这一点:)

为什么我不能同时覆盖和新建一个Property(C#)?

根据这个问题,你似乎可以为方法做到这一点。 我想知道的是当我尝试使用属性时它不起作用的原因。 public class Foo { public virtual object Value { get; set; } } public class Foo : Foo { public override object Value { get { return base.Value; } set { base.Value = (T)value; //inject type-checking on sets } } public new T Value { get { return (T)base.Value; } set { base.Value […]

当它不是静态时,如何使用现有方法而不是lambda?

这必须是重复但我还没有找到它。 我发现这个问题是相关的,因为它回答了为什么建议使用方法组而不是lambda。 但是,如果方法不在当前类中且方法不是static我如何使用现有方法组而不是lambda? 假设我有一个我希望转换为字符串的整数列表,我可以使用List.ConvertAll ,但我需要将Converter传递给它: List ints = new List { 1 }; List strings = ints.ConvertAll(i => i.ToString()); 这有效,但它使用lambda创建了一个不必要的匿名方法。 因此,如果Int32.ToString是静态的并且将采用int我可以写: List strings = ints.ConvertAll(Int32.ToString); 但那当然不能编译。 那么我怎么能使用方法组呢? 如果我要创建这样的实例方法 string FooInt(int foo) { return foo.ToString(); } 我可以使用strings = ints.ConvertAll(FooInt); ,但这不是我想要的。 我不想创建一个新方法只是为了能够使用现有的方法。

ASP.NET锁线程方法

我正在使用C#开发ASP.NET表单Web应用程序。 我有一个为客户创建新订单的方法。 它看起来与此类似; private string CreateOrder(string userName) { // Fetch current order Order order = FetchOrder(userName); if (order.OrderId == 0) { // Has no order yet, create a new one order.OrderNumber = Utility.GenerateOrderNumber(); order.Save(); } return order; } 这里的问题是,两个请求(线程)中的1个客户可能会导致此方法被调用两次,而另一个线程也可能在此方法中。 这可能导致创建两个订单。 如何正确锁定此方法,因此每个客户一次只能由一个线程执行? 我试过了; Mutex mutex = null; private string CreateOrder(string userName) { if (mutex == null) […]

获取对象调用层次结构

可以说我有3节课: class A { void do_A() { //Check object call hierarchy } } class B { void do_B() { A a; a.do_A(); } } class C { void do_C() { B b; b.do_A(); } } 然后我打电话给: C c; c.do_C(); 如何从A的do_A()中获取对象调用层次结构? 我的意思是我想在a.do_A()中获取对象的引用(可以通过this方便地实现),对象b的引用调用a.do_A() ,以及对象c的引用,称为b.do_B( ) 。 我认为这应该是可能的,因为我可以通过调用堆栈获得调用层次结构,所以我确信我应该能够获得有关调用这些方法的对象的更多信息。

如何使用自定义属性动态计算所有方法

我有一个简单的挑战。 我动态地需要弄清楚C#中具有特定属性的所有方法。 我将从另一个应用程序动态加载程序集,需要找出确切的方法。 组件如下所示: Base.dll: Class Base { [testmethod] public void method1() … } Derived.dll: Class Derived:Base { [testmethod] public void method2() } 现在在第3个应用程序中,我动态地想加载上面提到的dll并找出testmethods。 如果我加载Base.dll,我需要获得testmethod1。 如果我加载Drived.dll,我应该得到testmethod1和testmethod2。 我在网上找到了一些帮助我动态加载dll的代码: List a = new List(); string bin = @”Bin-Folder”; DirectoryInfo oDirectoryInfo = new DirectoryInfo(bin); //Check the directory exists if (oDirectoryInfo.Exists) { //Foreach Assembly with dll as the extension […]

使用显式接口防止意外修改C#中的属性

我偶然发现了一个我以前没有注意到的C#方法解决方案的function。 也就是说,当我明确地实现支持setter的接口,并且隐式接口仅提供受保护的集合时,编译器在我调用它时明智地遵循受保护的集合。 因此,我获得了自动实现属性的大部分便利,但我可以防止不应该更改它们的客户端意外修改字段。 举个例子, virtual public DateTime CreatedOn { get; protected set; } virtual public DateTime? ModifiedOn { get; protected set; } #region IHaveUpdateDateFields Members DateTime IHaveUpdateDateFields.CreatedOn { get { return this.CreatedOn; } set { this.CreatedOn = value; } } DateTime? IHaveUpdateDateFields.ModifiedOn { get { return this.ModifiedOn; } set { this.ModifiedOn = value; } } […]

将布尔方法添加到现有类C#的最佳方法

我确信这是一个非常简单的任务,但我不完全确定如何将其写入搜索查询。 我得到的最好的是扩展方法,我无法理解它们或得到正确的语法。 我目前正在使用一个简化为GTA V制作mod的程序集。这些程序集包含一个Ped“类型”,其中包含一系列附加到它的方法。 我正在寻找的是能够添加我自己的方法,可以存储bool值作为Ped类的扩展。 非常感谢任何帮助,谢谢。

C#委托定义 – 匿名方法与正式定义的方法

何时应该在定义委托时使用匿名方法,何时应该在定义委托时使用正式定义的方法?