有这样的事情:
public abstract class AAA
{
protected abstract virtual string ToString() // Error
{
// Base Stuff
}
}
public abstract class BBB : AAA
{
public override string ToString()
{
// Use base.ToString();
// More Stuff
}
}
Run Code Online (Sandbox Code Playgroud)
我读了另一篇文章(虚拟课堂中的抽象方法)女巫很像我的问题,但是有一点不同.我希望AAA.ToString()具有基本行为并强制派生类覆盖它.
我知道我可以做这样的事情(向下滚动)但我正在寻找一种正确的方法.
public abstract class AAA
{
public abstract string ToString();
protected string ToString2()
{
// Base Stuff
}
}
public class BBB : AAA
{
public override string ToString()
{
// Use base.ToString2();
// More Stuff …Run Code Online (Sandbox Code Playgroud) 我正在研究一种引擎,该引擎可由用户(不是最终用户,库用户)配置以使用不同的组件.例如,假设该类Drawer必须具有ITool,Pencil或Brush,和IPattern,Plain或Mosaic.此外,比方说,一个Brush必须拥有的IMaterial任一Copper或Wood
让我们说选择的效果Pencil或Brush实际上是非常不同的,IPattern类型也是如此.Drawer使用如下通用概念对类进行编码是不是一个坏主意:
public class Drawer<Tool, Pattern> where Tool: ITool where Pattern : IPattern { ... }
public class Brush<Material> where Material : IMaterial { ... }
Run Code Online (Sandbox Code Playgroud)
然后可以使用该类,如:
Drawer<Pencil, Mosaic> FirstDrawer = new Drawer<Pencil, Mosaic>();
Drawer<Brush<Copper>, Mosaic> SecondDrawer = new Drawer<Brush<Copper>, Mosaic>();
Run Code Online (Sandbox Code Playgroud)
我主要使用泛型来收集等等,而且还没有真正看到泛型用于那种事情.我是不是该?
我试图阻止一些线程,阅读一些关于正确地执行它的正确方法的事情,但我必须做错了什么因为它根本不起作用.起初,我试着不lock()带_IsRunning是挥发性的,然后用锁尝试.这就是我所拥有的.
private volatile bool _IsRunning;
private static readonly object runLock = new object();
public void Start()
{
if (_IsRunning == true)
return;
_IsRunning = true;
(new System.Threading.Thread(new System.Threading.ThreadStart(SendLoop))).Start();
}
public void Stop()
{
lock (runLock)
{
_IsRunning = false;
}
}
private void SendLoop()
{
while (_IsRunning)
{
lock (runLock)
{
if (_sockets.Count > 0)
{
//some stuff
}
else
{
System.Threading.Thread.Sleep(10);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我在设置断点while(),并且_IsRunnig仍然是即使我通过真实的Stop().
我理解为什么这两个陈述是错误的
NULL LIKE 'X'
NULL NOT LIKE 'X'
Run Code Online (Sandbox Code Playgroud)
但是,我不明白为什么这些是:
NOT (NULL LIKE 'X')
NOT (NULL NOT LIKE 'X')
Run Code Online (Sandbox Code Playgroud)
例如,我认为这两个语句应该返回不同的值:
SELECT CASE WHEN NOT (NULL LIKE 'X') THEN 'True' ELSE 'False' END
SELECT CASE WHEN (NULL LIKE 'X') THEN 'True' ELSE 'False' END
Run Code Online (Sandbox Code Playgroud) 首先,这个问题不是关于"如何将位图保存为磁盘上的jpeg?"
我无法找到(或想到)Bitmap使用Jpeg压缩转换a的方法,但将其保留为Bitmap对象.MSDN清楚地展示了如何将Bitmap保存为JPEG,但我正在寻找的是如何将编码/压缩应用于Bitmap对象,因此我仍然可以在我的代码中传递它,而无需引用该文件.
其背后的原因之一是处理位图的辅助类,但不应该知道使用的持久性方法.
我有一个绑定ObservableCollection的数据网格.有一个状态字段.单击过滤器按钮时,我需要按状态过滤.我使用MVVM并需要在VM类中进行过滤.
<DataGrid
CanUserResizeColumns="False" CanUserResizeRows="False" IsEnabled="{Binding IsKeySet}"
Name="dgwTemplateDetails" CanUserAddRows="False" SelectionMode="Single"
ItemsSource="{Binding OrderTemplateList, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
AutoGenerateColumns="False" Width="auto" FontWeight="Normal" FontStyle="Normal">
<DataGrid.Columns>
<DataGridTextColumn Header="Act Code" Width="75" Binding="{Binding ActCode}" IsReadOnly="True"/>
<DataGridTextColumn Header="Act Name" Width="*" Binding="{Binding ActName}" IsReadOnly="True"/>
<DataGridTextColumn Header="No. Of Days" Width="80" Binding="{Binding NoOfDays}"/>
<DataGridTemplateColumn Header="To be Finish Date" Width="110" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding EarStartDt, StringFormat=dd/MM/yyyy, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding EarStartDt, StringFormat=dd/MM/yyyy, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Act Status" Width="100" Binding="{Binding ActStatus}" IsReadOnly="True"/>
<DataGridTextColumn Header="Remarks" Width="200" Binding="{Binding Remarks}" IsReadOnly="True"/> …Run Code Online (Sandbox Code Playgroud) 如果我想迭代一个集合,并在集合中的每个元素上调用一个函数,我可以使用:
foreach (var obj in objColl)
{
MyFunction(obj);
}
Run Code Online (Sandbox Code Playgroud)
我是否应该使用linq执行此操作,我可以使用以下任一方法:
//#1
var unused = (from var obj in objColl select MyFunction(obj)).ToList();
//#2
var unused = objColl.Select(obj => MyFunction(obj)).ToList();
Run Code Online (Sandbox Code Playgroud)
我知道这有效,但似乎不对.当然,我的实际案例是更复杂的查询,但由于我可以使用Linq构建我的IQueryable并迭代它并调用该函数,因此归结为此.
编辑:以下是我所做的一个例子.(项目#是我无法透露的事情)
var dummyValue = (from
Item7 in dal.GetAgencyConvertions().Where(age => age.SourceName == "Item1" && age.TargetName == "Item2")
join Item6 in dal.GetAgencyConvertions().Where(age => age.SourceName == "Item2" && age.TargetName == "Item3") on Item6.TargetValue equals Item7.SourceValue
join agency in dal.GetAgencies() on Item7.SourceValue equals agency.Agency
orderby Item7.TargetValue
select vl.ValueListItems.Add(agency.ID, Item7.TargetValue)).ToList();
Run Code Online (Sandbox Code Playgroud) string myString = string.Format("{0}{1}", "foo");
Run Code Online (Sandbox Code Playgroud)
这编译但在运行时失败.我知道为什么,不用担心.任何人都知道一个宏或一个工具,它会检查我的整个解决方案,以便在编码时找到每一个这样的...分心?简单的只检查表达式是否不是变量就足够了.它可能适用于FxCop或StyleCop,但越简单就越好:-D
谢谢
我正在尝试粘贴我之前复制的一些值,但是我正在丢失数据,因为我事先正在清理目标单元格.
这是代码的示例:
Range("A1:B3").Select
Selection.Copy
Range("C1:D3").Select
Selection.ClearContents 'At this point the clipboard is cleared
Range("C1").Select
ActiveSheet.Paste 'I get an error here as the clipboard has been cleared
Run Code Online (Sandbox Code Playgroud)
考虑到我不能先清除内容,有没有办法存储Range("A1:B3")的内容,以便我以后可以粘贴它?
我想知道我是否可以使用自动属性,仍然能够触发属性更改的事件.这是我目前的课程.(实际的User类当然有更多的属性/字段).
public delegate void UserEventHandler(object sender, EventArgs e);
public class User
{
public event UserEventHandler Changed;
private string _UserName;
public string UserName
{
get
{
return _UserName;
}
private set
{
_UserName = value;
this.OnChanged(EventArgs.Empty);
}
}
protected void OnChanged(EventArgs e)
{
if (Changed != null)
{
Changed(this, e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我想知道是否有一种方法可以利用自动属性并仍然可以触发OnChanged事件.换句话说:半自动属性是否可能?
对于我正在处理的DataContext,我不想加载表直到需要它们.我想创建一个方法来检查某个表是否在加载之前加载,但我最终有n个方法做同样的事情:
private void Load(ref Table<Order> Orders)
{
if (Orders == null)
Orders = this.GetTable<Order>();
}
Run Code Online (Sandbox Code Playgroud)
我试图制作一个通用的,原因很明显,但我得到一个"类型'T'必须是一个引用类型,以便在泛型类型或方法'System.Data.Linq中将它用作参数'TEntity' .Table'"这样做的例外情况:
private void Load<T>(ref Table<T> TableToLoad)
{
if (TableToLoad == null)
TableToLoad = this.GetTable<T>();
}
Run Code Online (Sandbox Code Playgroud) 我想频繁获取更改的货币汇率,如[与美元或指定货币相比的当前英镑,欧元,日元汇率].我用谷歌搜索并从Bloomberg的网站获得Bloomberg API dotnet示例.但我遇到了必要的问题,我确实有几个问题.
我需要某种Bloomberg许可证吗?
有人可以告诉从这些API示例开始的位置吗?