标签: class-structure

C#:列出汇编中的所有类

我想输出(以编程方式 - C#)我的程序集中所有类的列表.

任何提示或示例代码如何做到这一点?反射?

.net c# class-structure

98
推荐指数
2
解决办法
9万
查看次数

如果成员也是按层次结构构建的,那么如何构建类结构?

我正在构建一个PHP Web应用程序,它应该为用户提供在他和另一个人/组织之间订购(ConnectDirect或File Transfer Gateway)连接的"安装"/设置的可能性.

(连接实现的技术细节并不重要 - 在应用程序中,它只是作为产品的连接,可以订购和管理.)

其模型层的类层次结构应代表以下实际基础结构:

  • 连接,可以订购.
  • 连接可以是IBM Connect:Direct连接或IBM File Transfer Gateway连接.
  • CD连接是从A(直接)到B(目标).
  • FTGW连接包括物理上的两个连接的:A(源)到FTGW服务器,并从服务器FTGW到B(目标) -但在逻辑上(用于排序的用户)它也是一个连接.
  • (还有一个FTGW连接的情况,它使用Connect:Direct作为protokoll.)
  • 每个端点都是源或目标.

所以我看到以下逻辑元素:逻辑连接,物理连接,角色(目标),连接类型,顺序,端点,端点类型(CD和FTGW).

我目前的结构如下:

连接和端点伪UML类图

但它有一些问题:

  1. 2种层次结构的树,其中每个元件的一个的含有特定的元素的子集的其他(各CD连接的由CD端点;每个FTGW连接包括两个FTGW端点,或更正确地:每个FTGW逻辑连接包括两个物理FTGW连接 - 每个连接由一个FTGW端点和FTGW服务器组成,作为第二个端点).

    另一种可能是替代的关系betweet EndpointPsysicalConnection通过两个关系:EndpointCD-PsysicalConnectionCDEndpointFTGW-PsysicalConnectionFTGW.

取代了关系

:更一致; 消除了从一对任何端点构建每个连接(类型)的伪造可能性的逻辑不精确(或甚至可能是错误 …

php architecture inheritance software-design class-structure

16
推荐指数
1
解决办法
476
查看次数

Flutter 开发人员应该在一个文件中放入多少个无状态 Widget 类?

我目前正在开发一个颤振应用程序。我有一个带有大部件树的文件。为了更容易理解、阅读和维护,我想“裁剪”小部件树。

首先,我所做的是创建多个函数,它们代表树的较大部分,例如_createFancyImage()_createFancyContainer。经过一番研究,我发现这样的设计有一些缺点(参见: https: //github.com/flutter/flutter/issues/19269)。所以我决定创建StatelessWidgets 。由于 widget 树非常庞大,我将其分解为 3 个逻辑StatelessWidget。现在我可以使用FancyImage()FancyContainer()代表每个独立的小部件。

作为初学者,我不确定是否应该将这些StatelessWidget类保留在同一个文件中。或者,我可以创建独立的文件。需要澄清的一件事是:我没有在其他地方使用那些奇特的小部件。这些是这一棵大部件树所独有的,否则我可以将它们外包到一个新文件夹中,例如“common_widgets”或“components”。

不幸的是,我在 Dart 和 Flutter Repo 风格指南中以及互联网上都找不到任何内容。

我很感激每一个建议。

class file class-structure dart flutter

5
推荐指数
1
解决办法
1574
查看次数

当请求更多功能时,是否应该将枚举重构为类?

此时我有以下代码.

internal enum Genders
{
  Male,
  Female,
  NotSure,
  Other
}
Run Code Online (Sandbox Code Playgroud)

我正在考虑添加一个额外的功能,以便我可以预先处理所有值根据它返回一个字符串.所以,我会按如下方式进行映射.

Male    -> "boy"
Female  -> "girl"
NotSure -> "oh-boy"
Other   -> "cow"
Run Code Online (Sandbox Code Playgroud)

我应该将枚举重构为类还是建议将ToString值分配给不同的枚举状态?我用Google搜索了它,但没有看到任何代码示例,所以我不确定这样做是否明智.

也许最好创建一个辅助类并使用这样的方法?

private IEnumerable<String> GetGenders()
{
  yield return "boy";
  yield return "girl";
  yield return "oh-boy";
  yield return "cow";
}
Run Code Online (Sandbox Code Playgroud)

或者我只是困惑自己,应该立即停止?

c# class-structure

4
推荐指数
1
解决办法
839
查看次数

如果条件在uml类图中?

如果"属性"为真,那么这个"操作"别无效.

我如何在uml类图中显示这一点.

谢谢你,金

diagram uml class class-structure

3
推荐指数
1
解决办法
1万
查看次数

帮助重构我的C#代码以使其更易于维护并使用最佳编码实践

我有这个C#类结构,我想重构使用最佳编码标准(使用接口/抽象类),因此它可以更易于维护和重用.现在的代码并不糟糕,但它并不理想.

我有一系列的TableItemGroup类:AccountTableItemGroup,PendingVoteTableItemGroup和RequestingVoteTableItemGroup.每个TableItemGrup包含一个字符串SectionName和一个List,用于其对应的TableItem ......如下:

public class AccountTableItemGroup {
    public string SectionName { get; set; }

    public List<AccountTableItem> Items
    {
        get { return this._items; }
        set { this._items = value; }
    }        
    public List<AccountTableItem> _items = new List<AccountTableItem>();

    public AccountTableItemGroup()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

将来会有更多的TableItemGroups,除了List部分之外它们都是相同的,我不想每次都复制代码并创建一个新的Group并进行小的更改.我知道必须有更好的方法.我想继续使用List <>泛型,所以我不必在以后投出任何东西.

另一部分是TableItems.我有AccountTableItem,PendingVoteTableItem和RequestingVoteTableItem.TableItems彼此不同,但它们各自共享三个常见字符串 - TitleLabel,DetailLabel和ImageName.但在此之后,每个TableItem可能有也可能没有其他属性或方法..如下:

public class AccountTableItem
{
    public string TitleLabel { get; set; }

    public string DetailLabel { get; set; }

    public string ImageName { get; set; }

    public bool SwitchSetting { get; set; }

    public AccountTableItem() …
Run Code Online (Sandbox Code Playgroud)

c# coding-style class-design class class-structure

3
推荐指数
1
解决办法
258
查看次数

Magento源模型约定

我经常在源模型中看到两种不同的方法似乎做同样的事情:

class Mypackage_Mymodule_Model_Source_Generic {

  /* I sometimes see this method */
  public function getAllOptions() {}

  /* And other times this method */
  public function toOptionArray() {}

}
Run Code Online (Sandbox Code Playgroud)

根据我的经验,使用哪种方法名称没有押韵或理由; 它们似乎都返回相同的数据结构.

有什么我想念的吗?

源模型toOptionArrayVarien_Data_Collection::toOptionArray?之间是否存在语义链接?

naming-conventions class-structure magento

3
推荐指数
1
解决办法
2160
查看次数

枚举的单独课程?

对业务层中用于存储枚举定义的单独类的一般共识是什么?这是不好的做法吗?这是否符合良好的n层设计?目前,我的枚举定义分布在不同的,我认为相关的类别 - 但我觉得它们应该在一个地方.事实上,这是一个主观问题,而且与我如何构建其余解决方案有关?

.net c# enums projects-and-solutions class-structure

2
推荐指数
2
解决办法
7219
查看次数

如何强制派生类实现静态属性或字段?

这是我的抽象类:

abstract class Enemy
{
    protected static abstract float HEALTH
    {
        get;
    }

    float health;

    void someMethod()
    {
        health = HEALTH;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的派生类:

abstract class BadGuy : Enemy
{
    protected override static float HEALTH
    {
        get { return 1; }
    }
}
Run Code Online (Sandbox Code Playgroud)

Compiler先生说我不能让成员HEALTH在Enemy课程中保持静态和抽象.

我的目标是强制每个子类具有可以从父类访问的静态或常量字段.

这有解决方案吗?如果没有,最优雅的解决方法是什么?使财产非静态?

c# inheritance class-structure

1
推荐指数
1
解决办法
1239
查看次数

按逻辑对方法进行分组

基本上我有一个带有私有方法的类和许多调用此私有方法的公共方法。我想对这些公共方法进行逻辑分组(最好是单独的文件),以便将其组织起来,更易于使用和维护。

public class MainClass
{
    private void Process(string message)
    {
        // ...
    }

    public void MethodA1(string text)
    {
        string msg = "aaa" + text;
        Process(msg);
    }
    public void MethodA2(int no)
    {
        string msg = "aaaaa" + no;
        Process(msg);
    }

    public void MethodB(string text)
    {
        string msg = "bb" + text;
        Process(msg);
    }

    // lots of similar methods here
}
Run Code Online (Sandbox Code Playgroud)

现在我这样称呼他们:

MainClass myMainClass = new MainClass();
myMainClass.MethodA1("x");
myMainClass.MethodA2(5);
myMainClass.MethodB("y");
Run Code Online (Sandbox Code Playgroud)

我希望能够这样称呼他们:

myMainClass.A.Method1("x");
myMainClass.A.Method2(5);
myMainClass.B.Method("y");
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现它?可能有一种我不知道的简单方法。

c# class-structure

0
推荐指数
1
解决办法
1099
查看次数

为什么string []被识别为字符串

我正在尝试将我的XML类与Math类分开.我正在读一个xml文件,查找该人开始的时间并将其放入字符串[](我想??)

    public static string elementStartWeek()
    {
        XmlDocument xmldoc = new XmlDocument();

        fileExistsWeek(xmldoc);

        XmlNodeList nodeStart = xmldoc.GetElementsByTagName("Start");

        int count2 = 0;
        string[] starttxtWeek = new string[count2];

            for (int i = 0; i <= nodeStart.Count; i++)
            {
                starttxtWeek[count2] = nodeStart[i].InnerText;
                count2++;
            }

        return starttxtWeek[count2];
    }
Run Code Online (Sandbox Code Playgroud)

我想将数组带入我的Math类并将时间转换为十进制值进行计算.我的Math类似乎将其识别为字符串而不是数组.

    public static void startHour()
    {
        string weekStart = WidgetLogic.elementStartWeek();

        string startTime = "";

        if (1 == 1)
        {
            startTime = weekStart;
            MessageBox.Show(weekStart);
        }
    }
Run Code Online (Sandbox Code Playgroud)

我希望weekStart在Math.cs中抛出一个错误.为什么这不会引发错误?

我正在调用startHour()UI对话框DetailerReport

    public DetailerReports()
    {
        InitializeComponent();

        Math.startHour();
    } …
Run Code Online (Sandbox Code Playgroud)

c# xml class-structure winforms

-4
推荐指数
1
解决办法
146
查看次数