使用反射,如何使用最少的代码获得使用C#3.0/.NET 3.5实现接口的所有类型,并最大限度地减少迭代?
这就是我想要重写的内容:
foreach (Type t in this.GetType().Assembly.GetTypes())
if (t is IMyInterface)
; //do stuff
Run Code Online (Sandbox Code Playgroud) 我有60k项需要根据20k查找列表进行检查.是否有一个集合对象(如List,HashTable)提供了一个异常快速的Contains()方法?或者我必须自己写吗?换句话说,默认Contains()方法是扫描每个项目还是使用更好的搜索算法.
foreach (Record item in LargeCollection)
{
if (LookupCollection.Contains(item.Key))
{
// Do something
}
}
Run Code Online (Sandbox Code Playgroud)
注意.查找列表已经排序.
调试时,"输出"窗口中的线程退出代码究竟是什么?它给了我什么信息?它在某种程度上是有用的还是只是一个不应该打扰我的内部东西?
The thread 0x552c has exited with code 259 (0x103).
The thread 0x4440 has exited with code 0 (0x0).
Run Code Online (Sandbox Code Playgroud)
可能有某种可能的退出代码列表及其重要性吗?
我的具体问题是:如何将模型更改从模型传递到ViewModel?
在Josh的文章中,我没有看到他这样做.ViewModel始终向Model询问属性.在Rachel的例子中,她确实拥有模型实现INotifyPropertyChanged,并从模型中引发事件,但它们是供视图本身使用的(有关她为什么这样做的详细信息,请参阅她的文章/代码).
我在任何地方都看不到模型警告ViewModel模型属性更改的示例.这让我担心,也许是因为某些原因没有做到的. 是否有一种模式用于警告ViewModel模型中的更改? 这似乎是必要的,因为(1)可以想象每个模型有超过1个ViewModel,(2)即使只有一个ViewModel,模型上的某些操作可能会导致其他属性被更改.
我怀疑可能会有"你为什么要这样做?"的答案/评论.评论,所以这里是我的程序的描述.我是MVVM的新手,所以也许我的整个设计都有问题.我将简要介绍一下.
我编写的东西比"客户"或"产品"类更有趣(至少对我而言!).我在编程BlackJack.
我有一个View,后面没有任何代码,只依赖于绑定到ViewModel中的属性和命令(参见Josh Smith的文章).
是好还是坏,我把该模型应该不仅包含类,如态度PlayingCard,Deck但也BlackJackGame认为保持整场比赛的状态,并且知道当玩家已经破产,经销商必须抓牌,阶级和玩家和经销商当前得分是多少(少于21,21,胸围等).
从BlackJackGame我公开像"DrawCard"这样的方法,我发现在绘制卡片时CardScore,IsBust应该更新属性,例如和,并将这些新值传递给ViewModel.也许这是错误的思考?
人们可以采取ViewModel称之为DrawCard()方法的态度,因此他应该知道要求更新的分数并找出他是否破产.意见?
在我的ViewModel中,我有逻辑来获取扑克牌的实际图像(基于套装,等级)并使其可用于视图.该模型不应该与此有关(也许其他ViewModel只使用数字而不是扑克牌图像).当然,也许有些人会告诉我模型甚至不应该有BlackJack游戏的概念,而应该在ViewModel中处理?
一种选择是做几次System.IO.Directory.GetParent().是否有更优雅的方式从执行程序集所在的位置移动几个文件夹?
我想要做的是找到一个文本文件,它位于应用程序文件夹上方的一个文件夹中.但是程序集本身位于bin中,这是应用程序文件夹中的几个文件夹.
我试图覆盖SqlConnection15秒的默认超时,并得到一个错误说
无法分配属性或索引器,因为它是只读的.
有没有解决的办法?
using (SqlConnection connection = new SqlConnection(Database.EstimatorConnection))
{
connection.Open();
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
connection.ConnectionTimeout = 180; // This is not working
command.CommandText = "sproc_StoreData";
command.Parameters.AddWithValue("@TaskPlanID", order.Projects[0].TaskPlanID);
command.Parameters.AddWithValue("@AsOfDate", order.IncurDate);
command.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个对象让我们调用它 ObjectA
并且该对象有10个属性,这些属性都是字符串.
var myObject = new {Property1="",Property2="",Property3="",Property4="",...}
Run Code Online (Sandbox Code Playgroud)
无论如何要检查所有这些属性是空还是空?
那么任何返回true或false的内置方法呢?
如果它们中的任何一个不为null或为空,则返回将为false.如果所有这些都是空的,它应该返回true.
我的想法是,我不想编写10 if语句来控制这些属性是空还是null.
谢谢
使用C#对象初始化器有什么好处吗?
在C++中没有引用,并且所有内容都封装在对象中,因此在创建对象后使用它们而不是初始化成员是有意义的.
它们在C#中使用的情况如何?
所以基本上如果我想改变一个名字
stephen smith
Run Code Online (Sandbox Code Playgroud)
至
Stephen Smith
Run Code Online (Sandbox Code Playgroud)
我可以轻松地使用来自页面上的css,但理想情况下我想早点抓住它并在数据库出来时更改它.如何让csharp将字符串封顶.
有这个功能吗?
c# ×10
.net ×6
c#-3.0 ×1
collections ×1
debugging ×1
exit-code ×1
lambda ×1
mvvm ×1
optimization ×1
properties ×1
reflection ×1
search ×1
sql-server ×1
struct ×1
wpf ×1