限制类的实例化,并将其封装在另一个类的属性中

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

我正在编写一个.net Standard类库,我想将其发布为内部包,所以我在同一项目中有两个类,如下所示:

 public class classOne
{

     public void SomeMethod()
        {

        }
}




 public class classTwo
{

     private ClassOne _classOne;

     public classOne clsOne
        {
            get
            {
                lock (padlock)
                {
                    if (_classOne== null)
                        _classOne= new ClassOne ();

                    return _classOne;
                }
            }
        }
}

如您在上面看到的,我希望开发人员将class One用作classTwo内部的属性。另外,我想防止classOne的实例化。唯一调用classOne方法的方法是通过classTwo的“ clsOne”属性。

    //I want this code
classTwo clsTwo = new classTwo();
clsTwo.clsOne.someMethod();


//And Prevent to do this code
classOne clsOnew= new classOne();
clsOne.someMethod();

我该如何实现?

c# nuget-package class-library
1个回答
0
投票
我相信您希望ClassOne是静态的。

它应该看起来像这样。

public static class classOne { public static void SomeMethod() { // Your logic } }

然后在ClassTwo构造函数中或您需要该函数调用的任何地方,

public class classTwo { public classTwo() { classOne.SomeMethod } }

© www.soinside.com 2019 - 2024. All rights reserved.