c # Можно ли создать статический объект в то же время, передав его в конструктор или метод другого объекта? - PullRequest
0 голосов
/ 13 октября 2018

Примерно так;

public static Group wsGroup = new Group(public static strVar wsStr = new strVar("Name", 10));

По сути, я стараюсь избегать.нотации.Конечно, я могу определить wsStr в wsGroup и сослаться на него как wsGroup.wsStr, но по причинам, в которые я не могу войти, клиент хочет сослаться только на wsStr.Теперь, когда они ссылаются на wsGroup, он возьмет все значения в объектах, которые были переданы его конструктору, и отформатирует их в одну большую строку.Конечно, я мог бы сделать что-то вроде этого;

public static strVar wsString = new strVar("Name", 10);
public static intVar wsValue = new intVar(10, "0000");

public static Group wsGroup = new Group(wsString, wsValue);

Проблема в том, что если я добавлю объект между wsString и wsValue и забуду добавить его в wsGroup, то произойдет сбой.,Таким образом, идея создания объектов по мере их передачи в wsGroup дает довольно надежное решение.Обратите внимание, что эти переменные должны быть видны каждому методу в классе.Заметьте также, что читаемость здесь очень важна, для этого не может потребоваться больше нескольких строк.

Я здесь во власти COBOL.Попытка перенести код COBOl на C #.Целью является решение на 100%, в то время как код по-прежнему читаем для программиста на языке COBOL.

Заранее благодарен за любую помощь

1 Ответ

0 голосов
/ 13 октября 2018

Я бы достиг этого, вообще избегая использования открытых полей.Если вы используете свойства, вы можете заставить их делегировать свою группу:

public class Container
{
     public static string DefaultName => DefaultGroup.Name;
     public static decimal DefaultPrice => DefaultGroup.Price;

     public static Group DefaultGroup { get; } = new Group("default name", 10m);
}

Это иллюстрирует преимущество отделения реализация (поля) от API (возможность написать Container.DefaultName).Почти никогда не уместно обнародовать поля.(Есть исключения из этого, но они немногочисленны и далеко друг от друга. Естественные константы - например, «количество миллисекунд в секунду») составляют одно очевидное исключение, но вы должны убедиться, что они действительные константы, которые никогда не изменятся.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...