Tag: 静态

为什么我不能在使用静态导入时将扩展方法称为静态方法?

背景: 我有一个静态类,但静态方法不是扩展方法。 我决定将方法重构为扩展方法,并且不希望任何代码破坏,因为扩展方法可以像静态方法一样被调用。 但是,当静态导入用于保存扩展方法的静态类时,代码确实中断了。 例: 我有一个带有扩展方法和静态方法的静态类: namespace UsingStaticExtensionTest.Extensions { static class ExtensionClass { internal static void Test1(this Program pg) { System.Console.WriteLine(“OK”); } internal static void Test2(Program pg) { System.Console.WriteLine(“OK”); } } } 当我使用以下using指令时,测试程序中的所有内容都可以正常工作: using UsingStaticExtensionTest.Extensions; namespace UsingStaticExtensionTest { class Program { static void Main(string[] args) { var p = new Program(); ExtensionClass.Test1(p); // OK p.Test1(); […]

静态属性如何在asp.net环境中工作?

如果我有一个具有静态属性的类,该属性是在用户加载特定页面时设置的,那么该用户会话的静态值是否是唯一的? 换句话说,如果第二个用户然后加载页面并设置静态属性,每个用户是否具有不同的值,或者都将使用第二个用户值?

为什么在通用静态类中声明扩展方法是不可能的?

我想为一些generics类创建很多扩展方法,例如for public class SimpleLinkedList where T:IComparable 我已经开始创建这样的方法: public static class LinkedListExtensions { public static T[] ToArray(this SimpleLinkedList simpleLinkedList) where T:IComparable { //// code } } 但是当我试图使LinkedListExtensions类像这样通用时: public static class LinkedListExtensions where T:IComparable { public static T[] ToArray(this SimpleLinkedList simpleLinkedList) { ////code } } 我得到“扩展方法只能在非generics,非嵌套的静态类中声明”。 而我正在试图猜测这种限制来自哪里并且没有任何想法。 编辑:仍然没有明确的问题愿景。 似乎这只是因为某种原因没有实现。

如何强制inheritance类在C#中实现静态方法?

我想要做的就是确保类Item的子类实现静态方法,并且我希望在编译时检查它以避免运行时错误。 使用静态方法的抽象类似乎不起作用: 错误:无法将静态成员标记为覆盖,虚拟或抽象 public abstract class Item { public static abstract Item GetHistoricalItem(int id, DateTime pastDateTime); } public class Customer : Item { public static override Customer GetHistoricalItem(int id, DateTime pastDateTime) { return new Customer(); } } public class Address : Item { public static override Address GetHistoricalItem(int id, DateTime pastDateTime) { return new Address(); […]

使用静态记录器,静态助手类进行dependency injection

我有一个静态类,它调用静态Logger类, 例如 static class DoesStuffStatic { public static void DoStuff() { try { //something } catch(Exception e) { //do stuff; Logger.Log(e); } } } static class Logger { public static void Log(Exception e) { //do stuff here } } 如何将Logger注入我的静态类? 注意:我已经通过示例阅读了.NET中的dependency injection? ,但这似乎使用实例记录器。

如何实现虚拟静态属性?

据我所知, C#不支持虚拟静态属性。 如何在C#实现这样的行为? 我想归档基类的所有派生类必须覆盖静态属性。 获取派生类型,我想访问名为Identifier的静态属性 Type t = typeof(DerivedClass); var identifier= (String) t.GetProperty(“Identifier”, BindingFlags.Static).GetValue(null, null);

为什么System.Random类不是静态的?

使用System.Random类时,必须创建它的实例。 为什么它不是static ? 因为如果我想要一个0到9之间的随机数,我可以使用静态方法 System.Random.Next(int, int) : int ourRandomNumber = Random.Next(0,9); 那么为什么class级不是static呢?

ASP.NET C#静态变量是全局的吗?

今天我发布了一个小的asp.net beta网络应用程序,允许内部员工修改一些产品信息。 我们开始遇到用户覆盖彼此产品信息的问题……即使每个工作人员正在编辑完全不同的行(产品)。 经过一些谷歌搜索,我想我知道发生了什么,它与使用静态变量有关,下面是一个快速粗略的问题示例: // EditProductGroup.aspx.cs public partial class EditProductGroup : System.Web.UI.Page { private static int _groupId = 0; protected void Page_Load(object sender, EventArgs e) { _groupId = Convert.ToInt16(Request.QueryString[“GroupID”]); // get existing ProductGroup information from database using //_groupId to find the row and populate textboxes } private void saveProductGroupData() { // when user hits ‘save […]