【c# 在静态方法里,怎么能得到调用者的类名?】教程文章相关的互联网学习教程文章

c# – 为什么我必须在泛型类上使用静态方法调用【代码】

我遵循this泛型类的例子.因为我不想用测试代码填充我的项目的主要功能,所以我想创建一个运行代码示例的静态展示函数. 我的代码:namespace Syntax {public class GenericClass<T>{private class Node{private T data;private Node next;public Node(T t){next = null;data = t;}public Node Next { get { return next; } set { next = value; } }public T Data { get { return data; } set { data = value; } }}private Node head;...

如何在不创建实例的情况下从C#类调用静态方法【代码】

我有这样的代码:class Program{static void Main(string[] args){Assembly myAsm = Assembly.LoadFile(@"c:\Some.dll");Type myService = myAsm.GetType("SomeClass");String s = (String) myService.InvokeMember("SomeMethod", BindingFlags.InvokeMethod | BindingFlags.Public,null, null, new object[] {"MyParam"});}}在Some.Dll中有公共静态方法SomeMethod和String param返回String但我得到方法缺少错误…解决方法:您缺少...

c# – 从静态方法访问类成员【代码】

我知道有很多线程在讨论这个问题,但到目前为止我还没有找到一个直接帮助我的情况.我需要从静态和非静态方法访问类的成员.但如果成员是非静态的,我似乎无法从静态方法中获取它们.public class SomeCoolClass {public string Summary = "I'm telling you";public void DoSomeMethod(){string myInterval = Summary + " this is what happened!";}public static void DoSomeOtherMethod(){string myInterval = Summary + " it didn't ...

C#中的静态方法,静态字段和多级头【代码】

我有1个静态类,1个字段和2个方法:static class MyClass{private static HttpClient client = new HttpClient();private static string SendRequestToServer(int id){Task<HttpResponseMessage> response = client.GetAsync("some string");responseTask.ContinueWith(x => PrintResult(x));return "some new value";}private static void Print(Task<HttpResponseMessage> task){Task<string> r = task.Result.Content.ReadAsStri...

c# – 抽象类的非静态方法和静态方法有什么区别?【代码】

我知道在Abstract类中使用静态方法不是最佳实践,但有什么区别如果我在抽象类中同时使用静态和非静态方法. 我假设调用这些方法没有区别,因为我们不能为Abstract Class创建实例,所以我们只能使用类名调用静态和非静态方法. 除了关键字“静态”之外,它们之间还有其他区别吗? 例如:抽象类:abstract public class AbstractClass {#region Constructorprotected AbstractClass(Args args): this(args){}#endregion#region public stat...

从F#调用C#静态方法【代码】

我在C#中有这个类: 使用System.Collections.Generic;namespace StrassGlassLib {public class Mesh{private List<Model.Node> _ns;private List<Model.Plate> _ps;public Mesh(){_ns = new List<Model.Node>();_ps = new List<Model.Plate>();}public List<Model.Node> Nodes => _ns;public List<Model.Plate> Plates => _ps;public void AddNode(Model.Node n){_ns.Add(n);}public void AddPlate(Model.Plate p){_ps.Add(p);}// ...

c# – Resharper不允许我将静态方法重构为实例方法【代码】

我正在使用ReSharper将静态方法重构为实例方法,但ReSharper抛出的错误是:method has no suitable parameter that can be made into ‘this’这是什么意思?这是我的类方法:public static DateTime PreviousOrCurrentQuarterEnd(DateTime date) {Quarter qrtr = GetQuarter(date);DateTime endOfQuarter = GetEndOfQuarter(date.Year, qrtr);if (endOfQuarter == date)return date;else{DateTime startOfLast = GetStartOfQuarter...

如何从C#中的Action委托中调用非静态方法【代码】

由于我正在为要执行的某个操作编写通用概念,因此我需要在Action委托中调用一些非静态方法.而且,我的代码中没有一个是静态的.但是我仍然不能在Action定义中调用非静态方法.这是我的代码 – private Dictionary<string, Action<object>> m_dicUndoRedoAction = new Dictionary<string, Action<object>>(); m_dicUndoRedoAction.Add("DeleteClass", DeleteClassFromeNode );这是DeleteClass的定义private Action<object> DeleteClassF...

c# – 如果父类和子类具有相同名称的静态方法,为什么它被认为是方法隐藏?【代码】

如果声明一个继承层次结构,其中父类和子类都具有相同名称和参数*的静态方法,则Visual Studio将引发警告CS0108: 例:public class BaseClass {public static void DoSomething(){} }public class SubClass : BaseClass {public static void DoSomething(){} }:警告CS0108:’SubClass.DoSomething()’隐藏继承的成员’BaseClass.DoSomething()’.如果要隐藏,请使用new关键字. 为什么这个方法被隐藏了?这两种方法都不涉及继承层次...

c# – 从GenericClass访问静态方法,其中T由Type实例给出【代码】

我有一个带静态方法的泛型类,该方法使用type参数:GenericClass<T> {public static void Method(){//takes info from typeof(T)} }现在,我需要访问该静态方法,但不是简单地使用GenericClass< KnownType> .Method().我需要有一个Type实例.所以:public void OutsiderMethod(Type T) {GenericClass<T>.Method() //it's clear this line won't compile, for T is a Type instance//but i want some way to have access to that static...

在c#中从另一个类或静态方法更改wpf元素/控件【代码】

我有一个MainWindow,它包含一个文本块[statusTextblock],它绑定到一个字符串[StatusText]. StatusTextblock需要显示来自另一个窗口的组合框结果.当它在另一个窗口中发生变化时,我将这些数据传递回mainwindow,并且当发生这种情况时我已经创建了一个静态方法来更改字符串. 但是,所有这些的静态性使我无法在任何时候将我的textbox元素更改为StatusText的新值. 我考虑过工作,以便在用户返回Mainwindow时进行更改,但我没有成功.我尝试了...

c# 在静态方法里,怎么能得到调用者的类名?

System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace(); string name = st.GetFrame(1).GetMethod().Name;然后大概可以反射出来 在静态函数中可以用此名称作为事件的发送者 如: DxMessageHelper.DxSendMessage(callName,getTaskMsg);

c# – 扩展方法调用不编译,但静态方法调用相同的代码编译【代码】

库A调用库B使用C#扩展方法. 我从C#编译器得到了一个奇怪的错误:The type ‘System.Windows.Forms.Control’ is defined in an assembly thatis not referenced. You must add a reference to assembly‘System.Windows.Forms, Version=4.0.0.0库A或B都不依赖于System.Windows.Forms.Control,也没有任何依赖于System.Windows.Forms.Control的依赖关系. System.Windows.Forms.Control仅从同一解决方案中的另一个项目引用. 奇怪的是,...

c# – 在静态方法线程安全中使用foreach而不是HttpContext.Current吗?【代码】

记住这些 –HttpContext.Current –Foreach 我无法绕过这个问题……这个代码在ASP.NET中是“线程安全的”吗?public static bool IsCookieMissing() {foreach (string cookieKey in HttpContext.Current.Request.Cookies.AllKeys){if (cookieKey.EndsWith("cookie_name")){return false;}}return true; }解决方法:Is this code “thread safe” in ASP.NET?这取决于你期望它做什么.它最有可能做你期望做的事情,因此它是“线程安全的...

c# – .NET远程处理异常:权限被拒绝:无法远程调用非公共或静态方法【代码】

我正在编写一个程序,它允许加载特定的托管.DLL文件并使用它.由于我希望能够卸载.DLL文件,我正在创建两个AppDomain – 一个用于app本身,另一个用于当前加载的.DLL. 由于加载的.DLL中的大多数对象都没有很好地序列化,我正在创建一个MarshalByRefObject包装类,它将对象本身保存在自己的AppDomain中,并将一些反射函数暴露给主应用程序AppDomain. 但是,当我尝试在远程对象上调用一个方法时,我遇到了异常:Permission denied: cannot ca...