gpt4 book ai didi

c# - 如何知道静态方法的类名

转载 作者:行者123 更新时间:2023-12-02 15:20:42 25 4
gpt4 key购买 nike

我有一个类,它有一些静态方法。我还有另一个类继承了我的第一个类,如下所示;

public class Business
{
public static DataTable Get()
{
}
}

public class Model : Business
{
public int ID { get; set; }
public string CompanyName { get; set; }
}

我像下面一样使用它;

Model.Get();

在 Do 方法内部,我 try catch Model 类的类型。我可以在 Do 方法中捕获如下所示的 Business 类类型;

public static DataTable Get()
{
Type t = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType;
}

但我无法捕获模型类类型。我怎样才能做到这一点?

注意: Business 类中的 Get 方法选择列直至调用它的类。这就是为什么我需要模型类的名称。因为模型类的名称将是表的名称,并且它将从表模型中选择列。

注2:通常我会这样使用它;

Business.Get<Model>();

我可以从模型表中获取所有数据。但我尝试像这样使用它;

Model.Get();

最佳答案

你不能。没有什么叫B.Do()。它隐式意味着 A.Do()

DoA 中定义的静态方法。 Do 方法中不存在 A 中定义的 B 元数据。

能够调用B.Do();只是C#编译器为您提供的一种便利。请注意,对于使用派生类型使用基类成员的情况,resharper 会发出警告。

请注意,即使你写

B.Do();

编译器将其转换为

call A.Do// Call IL

更新:对于更新的问题,我建议您使用实例方法而不是静态方法。

Model model = new Model();
model.Get();

在get内部可以使用GetType().Name来获取当前实例的类名。

public class Business
{
public DataTable Get()
{
string className = this.GetType().Name;
}
}

关于c# - 如何知道静态方法的类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32991899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com