我想输出(以编程方式 - C#)我的程序集中所有类的列表.
任何提示或示例代码如何做到这一点?反射?
我正在构建一个PHP Web应用程序,它应该为用户提供在他和另一个人/组织之间订购(ConnectDirect或File Transfer Gateway)连接的"安装"/设置的可能性.
(连接实现的技术细节并不重要 - 在应用程序中,它只是作为产品的连接,可以订购和管理.)
其模型层的类层次结构应代表以下实际基础结构:
所以我看到以下逻辑元素:逻辑连接,物理连接,角色(源和目标),连接类型,顺序,端点,端点类型(CD和FTGW).
我目前的结构如下:

但它有一些问题:
有2种层次结构的树,其中每个元件的一个的由含有特定的元素的子集的其他(各CD连接的由CD端点;每个FTGW连接包括两个FTGW端点,或更正确地:每个FTGW逻辑连接包括两个物理FTGW连接 - 每个连接由一个FTGW端点和FTGW服务器组成,作为第二个端点).
另一种可能是替代的关系betweet Endpoint并PsysicalConnection通过两个关系:EndpointCD-PsysicalConnectionCD和EndpointFTGW-PsysicalConnectionFTGW.

亲:更一致; 消除了从一对任何端点构建每个连接(类型)的伪造可能性的逻辑不精确(或甚至可能是错误 …
php architecture inheritance software-design class-structure
我目前正在开发一个颤振应用程序。我有一个带有大部件树的文件。为了更容易理解、阅读和维护,我想“裁剪”小部件树。
首先,我所做的是创建多个函数,它们代表树的较大部分,例如_createFancyImage()或_createFancyContainer。经过一番研究,我发现这样的设计有一些缺点(参见: https: //github.com/flutter/flutter/issues/19269)。所以我决定创建StatelessWidgets 。由于 widget 树非常庞大,我将其分解为 3 个逻辑StatelessWidget。现在我可以使用FancyImage()或FancyContainer()代表每个独立的小部件。
作为初学者,我不确定是否应该将这些StatelessWidget类保留在同一个文件中。或者,我可以创建独立的文件。需要澄清的一件事是:我没有在其他地方使用那些奇特的小部件。这些是这一棵大部件树所独有的,否则我可以将它们外包到一个新文件夹中,例如“common_widgets”或“components”。
不幸的是,我在 Dart 和 Flutter Repo 风格指南中以及互联网上都找不到任何内容。
我很感激每一个建议。
此时我有以下代码.
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)
或者我只是困惑自己,应该立即停止?
如果"属性"为真,那么这个"操作"别无效.
我如何在uml类图中显示这一点.
谢谢你,金
我有这个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) 我经常在源模型中看到两种不同的方法似乎做同样的事情:
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)
根据我的经验,使用哪种方法名称没有押韵或理由; 它们似乎都返回相同的数据结构.
有什么我想念的吗?
源模型toOptionArray和Varien_Data_Collection::toOptionArray?之间是否存在语义链接?
对业务层中用于存储枚举定义的单独类的一般共识是什么?这是不好的做法吗?这是否符合良好的n层设计?目前,我的枚举定义分布在不同的,我认为相关的类别 - 但我觉得它们应该在一个地方.事实上,这是一个主观问题,而且与我如何构建其余解决方案有关?
这是我的抽象类:
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课程中保持静态和抽象.
我的目标是强制每个子类具有可以从父类访问的静态或常量字段.
这有解决方案吗?如果没有,最优雅的解决方法是什么?使财产非静态?
基本上我有一个带有私有方法的类和许多调用此私有方法的公共方法。我想对这些公共方法进行逻辑分组(最好是单独的文件),以便将其组织起来,更易于使用和维护。
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)
我怎样才能实现它?可能有一种我不知道的简单方法。
我正在尝试将我的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) class-structure ×11
c# ×7
class ×3
.net ×2
inheritance ×2
architecture ×1
class-design ×1
coding-style ×1
dart ×1
diagram ×1
enums ×1
file ×1
flutter ×1
magento ×1
php ×1
uml ×1
winforms ×1
xml ×1