我正在努力学习单一责任原则(SRP),但这是非常困难的,因为我很难弄清楚我应该从一个班级中删除的时间和内容,以及我应该放置/组织它的地方.
我正在谷歌搜索一些材料和代码示例,但我找到的大多数材料,而不是让它更容易理解,使它很难理解.
例如,如果我有一个用户列表,并且从该列表中我有一个叫做控制的类,可以执行很多事情,例如当用户进/出时发送问候和再见消息,验证用户应该能够进入的天气并踢他,接收用户命令和消息等.
从示例中你不需要太多了解我已经在一个类中做了太多但是我不清楚如何在之后拆分和重新组织它.
如果我理解SRP,我会有一个加入频道的课程,问候和再见,一个用户验证课程,一个阅读命令的课程,对吧?
但是我在哪里以及如何使用踢球?
我有验证课程,所以我相信我会在那里进行各种用户验证,包括天气或者不应该踢用户.
因此,kick函数将位于通道连接类中,并在验证失败时被调用?
例如:
public void UserJoin(User user)
{
if (verify.CanJoin(user))
{
messages.Greeting(user);
}
else
{
this.kick(user);
}
}
Run Code Online (Sandbox Code Playgroud)
如果你们可以借助易于理解的C#在线和免费资料,或者通过向我展示如何分割引用的示例以及可能的一些示例代码,建议等,我将不胜感激.
如何更改文本框的高度?
以下两项都不奏效:
this.TextBox1.Size = new System.Drawing.Size(173, 100);
Run Code Online (Sandbox Code Playgroud)
要么
this.TextBox1.Size.Height = 100;
Run Code Online (Sandbox Code Playgroud)
我希望能够更改单行文本框高度以适应其上的字体大小,如果可能的话不使用多行.
我正在寻找将电子邮件地址存储到mysql表中的最正确的字段类型和大小.
我最初考虑varchar 255,但我认为255可能是太多甚至太少,我能够捕获所有有效的电子邮件地址的平均大小是多少?
我有这个未压缩的字节数组:
0E 7C BD 03 6E 65 67 6C 65 63 74 00 00 00 00 00 00 00 00 00 42 52 00 00 01 02 01
00 BB 14 8D 37 0A 00 00 01 00 00 00 00 05 E9 05 E9 00 00 00 00 00 00 00 00 00 00
00 00 00 00 01 00 00 00 00 00 81 01 00 00 00 00 00 00 00 00 00 00 00 00 00 …Run Code Online (Sandbox Code Playgroud) 我有以下类和持有它的列表:
public class Transport
{
public string TransportType { get; set; }
public string Mode { get; set; }
public class Coordinates
{
public float ID { get; set; }
public float LocX { get; set; }
public float LocY { get; set; }
public float LocZ { get; set; }
public ObjectState State { get; set; }
public List<int[]> Connections = new <int[]>();
}
}
public enum ObjectState
{
Fly,
Ground,
Water
}
public static List<Transport> Tracking = new …Run Code Online (Sandbox Code Playgroud) 我想开始做一个可以在Linux和Windows上运行的跨平台项目.
我去单声道的网站查看事情,因为我听说mono允许我在Linux上运行c#,但当我到达那里时http://mono-project.com/Main_Page我有点困惑.
下载页面允许我下载它很好,但为了在VS2010上编程单声道我需要支付单一工具或在VS2010中有任何替代品吗?
总之,我需要能够在VS2010上使用单声道,在没有VS2010的情况下编程单声道的替代方案是什么?
我最近遇到了下面的链接,我发现它非常有趣.
http://en.wikipedia.org/wiki/XOR_linked_list
现在我想知道这是否仅适用于低级语言,或者在C#中是否也可以?
是否有任何类似的选项可以用C#产生相同的结果?
我正在使用 WPF 制作一个非常简单的秒表,但使用System.Diagnostics秒表非常慢而且根本不可靠,相比之下,我的应用程序每 1 秒的系统时钟在实际时钟上是 3 秒。
我做了一些关于秒表慢的搜索,找到了很多结果但没有解决方案,所以我决定想出我自己的计数器。
这是我想出的一个示例:
System.Windows.Threading.DispatcherTimer _update;
DateTime _started;
bool isRunning = false;
Run Code Online (Sandbox Code Playgroud)
更新线程:
_update = new System.Windows.Threading.DispatcherTimer(new TimeSpan(0, 0, 0, 0, 1), System.Windows.Threading.DispatcherPriority.Normal, delegate
{
if (isRunning)
iTimer.Content = new DateTime((DateTime.Now - _started).Ticks).ToString("HH:mm:ss");
}, this.Dispatcher);
Run Code Online (Sandbox Code Playgroud)
我有 2 个按钮,bToggle 负责启动、停止和恢复它,另一个按钮称为 bReset。
private void bReset_Click(object sender, RoutedEventArgs e)
{
isRunning = false;
iTimer.Content = "00:00:00";
bToggle.Content = "Start";
}
private void bToggle_Click(object sender, RoutedEventArgs e)
{
if ((string)bToggle.Content == "Start")
{
isRunning = true;
_started …Run Code Online (Sandbox Code Playgroud) HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(content);
var nodes = doc.DocumentNode.SelectNodes("//div[@class=\"noprint res\"]/div");
if (nodes != null)
{
foreach (HtmlNode data in nodes)
{
// Works but not what I want
MessageBox.Show(data.InnerHtml);
// Should work ? but does not ?
MessageBox.Show(data.SelectSingleNode("//span[@class=\"pp-place-title\"]").InnerText);
}
}
Run Code Online (Sandbox Code Playgroud)
我试图解析HTML的结果,foreach的初始节点,按预期工作,并给我10个项目的结果,这些项目符合我的需要.
当我进入foreach时,如果我输出数据项的内部html它显示正确的数据但是如果我输出SelectSingleNode它将始终显示来自foreach的第一项的数据,这是正常行为还是我做错了什么?
为了解决这个问题,我必须在foreach中为每个数据项创建一个新的html,如下所示:
HtmlAgilityPack.HtmlDocument innerDoc = new HtmlAgilityPack.HtmlDocument();
innerDoc.LoadHtml(data.InnerHtml);
// Select what I need
MessageBox.Show(innerDoc.DocumentNode.SelectSingleNode("//span[@class=\"pp-place-title\"]").InnerText);
Run Code Online (Sandbox Code Playgroud)
然后我得到正确的每项数据.
我试图从中获取数据的页面是http://maps.google.com/maps?q=consulting+loc:+US,如果您想尝试看看自己会发生什么.
基本上我正在读公司名称的左侧栏,以上情况发生.
有没有办法生成2048RSA密钥对,使用RSACryptoServiceProvider自定义指数?
new RSACryptoServiceProvider(2048); // = 65537 always
Run Code Online (Sandbox Code Playgroud)
例如,我想将指数设置为65535,但硬编码值似乎是65537.
我环顾四周,但无法找到任何信息.
我正在尝试使用生成新密钥对,而不是导入现有密钥RSACryptoServiceProvider.
我知道导入已经存在的密钥,我可以定义模数,指数和其他因素.
如果不可能,我有什么替代品?
c# ×9
.net-3.5 ×1
.net-4.0 ×1
bytearray ×1
compression ×1
fieldtype ×1
html-parsing ×1
installation ×1
linked-list ×1
mono ×1
mysql ×1
single-responsibility-principle ×1
size ×1
stopwatch ×1
textbox ×1
unsafe ×1
winforms ×1
wpf ×1
xor ×1
zlib ×1