Как определить статический класс с членами, которые являются одинаковыми в рамках проекта или решения? - PullRequest
0 голосов
/ 03 октября 2019

Это вопрос новичка, и он может быть очень легким для большинства из вас.

Я пытаюсь найти правильную архитектуру / структуру для проекта тематического исследования (скажем, пример проекта строительства здания).

Я пытаюсь определить команду для проекта, которая идентична на всех этапах проекта и ссылается на нее, а на ее членов ссылаются и используют на разных этапах.

Я создал Person класс, который определяет обязательные поля и использовал его в моем ProjectTeam классе, который является общим List<Person>.

  1. Я хочу знать, как использовать этот класс ProjectTeam в других классах, которые будут определять фазы в моем проекте? Я думаю о статическом классе, но я не знаю, как его использовать (p1.png).

  2. Должен ли я следовать концепции одного проекта с разными классами, илиЛучше следовать концепции одного решения с библиотекой классов, используемой в разных проектах (представляющих разные фазы) в моем решении. Я графически показал вторую идею на диаграмме not-a-UML (p2.png).

Мои классы: my classes

Схема архитектуры решения: solution architecture diagram

namespace MyClassLibrary
{    public class Person
    {        public enum ERole { Admin, Head, InCharge }
        public string Name { get; set; }
        public ERole Role;
        private decimal rate = 15.00m;
        public decimal Rate
        {   get { return rate; }
            set{ if (rate >= 15.00m) { rate = value; } }
        }
        public Person()
        {
            this.Name = "";
            this.Role = ERole.InCharge;
            this.Rate = 15.00m;
        }
    }
}

namespace MyClassLibrary
{
    public static class ProjectTeam
    {
        public static List<Person> TeamMembers = new List<Person>();
        static ProjectTeam()
        {
            TeamMembers.Add(new Person() { Name = "APerson",
                                           Role = Person.ERole.Admin,
                                           Rate = 30.00m });

            TeamMembers.Add(new Person() { Name = "BPerson",
                                           Role = Person.ERole.Head,
                                           Rate = 25.00m });

            TeamMembers.Add(new Person() { Name = "CPerson",
                                           Role = Person.ERole.InCharge,
                                           Rate = 15.00m });

        }

    }
}


namespace MyClassLibrary
{
    public class Project
    {
        public string ProjectName { get; set; }
        public int ProjectNumber{ get; set; }
        public string ProjectScope { get; set; }


    }
}

Ответы [ 3 ]

1 голос
/ 03 октября 2019

Вы можете использовать статический класс для человека в проектах, как показано ниже

public static class Team
{

    public static List<Person> GetPersons()
    {
        var person = new List<Person>();
        person.Add(new Person() { Name = "testPerson" });
        return person;
    }

}
public class Person
{
    public string Name { get; set; }
}
public class Project
{
    public string Name { get; set; }
    public string Scope { get; set; }
    public List<Person> Person
    {
        get
        {

            return Team.GetPersons();
        }
    }
}
0 голосов
/ 03 октября 2019

Если у вас есть 3 разных проекта, которые вы хотите ссылаться на DLL, выполните следующие действия:

1 - в обозревателе решений, под каждым проектом, в котором вы хотите использовать библиотеку, ... щелкните правой кнопкой мыши узел Referencesи нажмите «Добавить ссылку»

2 - В левой части появившегося справочного менеджера нажмите «Проекты»

3 - Установите флажок для проекта библиотеки. Это добавит ссылку на вашу библиотеку в проект, который вы хотите использовать для этой библиотеки.

4 - Теперь внутри вашего проекта вы хотите использовать класс ProjectTeam, добавьте его в начало файла .cs:

using MyClassLibrary;

5 - теперь в одну из ваших функций вы можете добавить этот код для использования этого класса ProjectTeam:

ProjectTeam.TeamMembers.Add(new Person......)

6 - Затем проведите некоторое исследование различий между статическими и нестатическими функциями.

0 голосов
/ 03 октября 2019

Попробуйте использовать синглтон. Это шаблон, хорошо известный и очень полезный. По сути, синглтон - это класс, который позволяет создавать только один его экземпляр и обычно предоставляет простой доступ к этому экземпляру. Реализация выглядит так:

    public sealed class Singleton
{
    private static Singleton m_oInstance = null;
    private int m_nCounter = 0;

    public static Singleton Instance
    {
        get
        {
            if (m_oInstance == null)
            {
                m_oInstance = new Singleton();
            }
            return m_oInstance;
        }
    }

    public void DoSomething()
    {
        Console.WriteLine("Hello World {0}!", m_nCounter++);
    }

    private Singleton()
    {
        m_nCounter = 1;
    }
}

И тогда вы можете получить к нему доступ таким образом:

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