gpt4 book ai didi

C#:通过方法在构造函数中设置属性

转载 作者:行者123 更新时间:2023-11-30 12:30:13 25 4
gpt4 key购买 nike

我开始理解 C# 和 OOP,但遇到了一个似乎无法解决的问题。我有一个名为 DataSet 的类,它应该包含多个属性(以 System.Collections.Generic.Dictionary 对象的形式)。在类中,我有从数据库加载数据的方法,这些方法应该用于初始化数据集。基本上,当我从 Main 方法实例化它时,我希望 DataSet 对象设置所有属性。

我有以下内容(省略细节):

public class DataSet
{
public IDictionary<string, MyClass1> Property1 { get; set; };
public IDictionary<string, MyClass2> Property2 { get; set; };
public IDictioanry<string, MyClass3> Property3 { get; set; };

public DataSet()
{
Property1 = new Dictionary<string, MyClass1>();
Property2 = new Dictionary<string, MyClass2>();
Property3 = new Dictionary<string, MyClass3>();
// Set Property1
// Set Property2
// Set Property3 (can only be done when Property1 is known)
}

private void GetProperty1(/* something? */)
{
// Loads the data from a database.
}

private static Dictionary<string, MyClass1> GetProperty1Alternative(DataSet dataSet)
{
// Same thing but static, so needs instance ref.
}

// Similarly for Property2 and Property3
}

我想要的是在构造函数中设置属性。我的问题基本上是:

  1. 我正在做的事情完全正确吗?
  2. 如果是,我是否应该将我的方法设为静态(并通过对方法的引用传递一个实例),这将要求 DataSet 类(及其所有属性)是静态的,或者有没有办法做我正在做的事情没有使数据集静态?
  3. 一个重要的问题是 Property3 只能在 Property1 已知/设置后才能设置。我不知道这是否可能...

非常感谢任何帮助。

最佳答案

您的代码中存在一些问题。您已将这些属性公开,因此还拥有 GetProperty1 并没有什么实际意义。另一种方法是将字典设为私有(private)变量,然后您可以:

public IDictionary<string,MyClass1> GetProperty1()
{
if ( _property1 == null )
{
_property1 = LoadFromDatabase();
}
return _property1;
}

同样对于 property3,您也可以在创建和返回它之前检查 proeprty1 是否不为 null,但是您还需要决定要做什么(首先自动加载属性 1 或以其他方式为 property3 返回 null)

关于C#:通过方法在构造函数中设置属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16809685/

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