C# 在类构造函数期间从服务器获取数据(http post)是不是不好的设计?

问题描述 投票:0回答:1

我有一个类,为了完全填充其所有属性,它需要从服务器获取一些数据。

目前我在服务器的构造函数中调用了服务器,如下所示:

public class GeometryObject
{
        public GeometryObject(string partName, CADFileType partType)
        {
            InitializeTransformParameters(); 
            CreateDefaultInternalParameters(); 
            CADFile = Server.GetCADFileAsync(partName, partType).Result; // not great having a time consuming action in the constructor but not sure how else to do this.                             
        } 
}

Server.GetCADFileAsync()
本质上是
HttpClient.PostAsync()
的包装。

虽然这可行(只要调用成功!!),但它闻起来有点像一个糟糕的设计?这种事情通常是如何处理的?我正在使用 C#6。

c# constructor httprequest
1个回答
0
投票

我已经看到它完成了,但并不完全好。更常见的方法使用工厂方法,如下所示:

public class MyClass
{
    // private constructor
    private MyClasss() {}


    public static MyClass Load()
    {
        // this method can call the constructor, because it's a member of the class
        var result = new MyClass();
        
        // populate required fields here

        
        return result;       
    }
}

然后,您可以使用如下类型,而不是

new MyClass()

var myVariable = MyClass.Load();
© www.soinside.com 2019 - 2024. All rights reserved.