这是一个初学者的问题,对于大多数专家来说可能非常容易。
我正在尝试为案例研究项目(例如,建筑施工示例项目)找到正确的建筑/结构。
我正在尝试为一个项目定义一个团队,该团队在所有项目阶段都是相同的,并且都被引用,并且其成员在不同的阶段都被引用和使用。
我创建了一个Person
类,该类定义了必填字段,并在我的ProjectTeam
类中使用了它,它是一个通用的List<Person>
。
我想知道如何在打算在我的项目中定义阶段的其他类中使用此ProjectTeam
类?我正在考虑一个静态类,但我不知道如何使用它(p1.png)。
我应该遵循一个具有不同类的项目的概念,还是最好遵循一个解决方案的概念,在我的解决方案中使用一个用于不同项目(代表不同阶段)的类库。我已经在not-a-UML图(p2.png)中以图形方式显示了第二个想法。
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; }
}
}
尝试使用单例。这是众所周知的模式,非常有用。本质上,单例是一个类,它仅允许创建其自身的单个实例,并且通常提供对该实例的简单访问。实现看起来像这样:
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();
如果您有3个不同的项目要引用DLL,请执行以下操作:
1-在解决方案资源管理器中,您要在其中使用库的每个项目下,右键单击“引用”节点,然后单击“添加引用”
2-在出现的引用管理器的左侧,单击“项目”
3-单击库项目的复选框。这会将您的库的引用添加到您要使用该库的项目中。
4-现在要在您的项目中使用ProjectTeam类,将其添加到.cs文件的顶部:
using MyClassLibrary;
5-现在您可以在其中一个函数中添加以下代码以使用该ProjectTeam类:
ProjectTeam.TeamMembers.Add(new Person......)
6-然后对静态和非静态函数之间的差异进行一些研究。
您可以为以下项目中的人员使用静态类
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();
}
}
}