gpt4 book ai didi

c# - 一种从静态上下文中获取非静态信息的方法

转载 作者:太空狗 更新时间:2023-10-29 19:53:22 25 4
gpt4 key购买 nike

我知道您不能从实例成员中获取静态成员。

但是假设我在一个程序集中有这个:

public class ClassA
{
public List<order> GetOrders(int orderID)
{
...
}
}

然后在另一个程序集中:

public static ClassB
{
private static void DoSomethingElse(int orderID)
{
List<order> orderList = ClassA.GetOrders(orderID);
...rest of code
}
}

有没有什么办法仍然可以通过其他方式获得 A 类中的该方法……是否可以解决这个问题?

最佳答案

您当然可以从实例成员访问静态成员...但是您应该理解为什么没有实例就不能访问实例成员。

您的类基本上是说 ClassA 的每个实例都允许您获取与特定 ID 关联的订单列表。现在,ClassA 的不同实例可能会给出不同的结果——例如,它们可能连接到不同的数据库。您希望在 DoSomethingElse 中获得哪些结果?

举一个更简单的例子,假设我们有一个Person类,每个人都有一个名字:

public class Person
{
public string Name { get; set; }
}

问“什么是 Person.Name”有意义吗?不 - 因为您没有指定您在谈论哪个人。

您应该使 ClassA.GetOrders 静态 - 如果它不涉及任何实例信息,包括虚拟成员 - 或者让 ClassB 知道实例ClassA 在查找订单时使用。

如果您能让我们知道这些类的更现实的名称,我们可以就哪种解决方案更合适提供指导......我个人通常倾向于后一种方法,因为静态成员通常会导致代码的可测试性降低。

关于c# - 一种从静态上下文中获取非静态信息的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3152673/

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