小编Tip*_*ipx的帖子

如何使用方法实现基类并强制派生类重写它?

有这样的事情:

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)

c# methods virtual abstract-class overriding

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

在非类似集合的类中使用泛型

我正在研究一种引擎,该引擎可由用户(不是最终用户,库用户)配置以使用不同的组件.例如,假设该类Drawer必须具有ITool,PencilBrush,和IPattern,PlainMosaic.此外,比方说,一个Brush必须拥有的IMaterial任一CopperWood

让我们说选择的效果PencilBrush实际上是非常不同的,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)

我主要使用泛型来收集等等,而且还没有真正看到泛型用于那种事情.我是不是该?

c# generics design-patterns class

5
推荐指数
0
解决办法
220
查看次数

如何在给定点停止线程?

我试图阻止一些线程,阅读一些关于正确地执行它的正确方法的事情,但我必须做错了什么因为它根本不起作用.起初,我试着不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().

c# multithreading

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

为什么"Null Like X"和"Not(Null Like X)"相同?

我理解为什么这两个陈述是错误的

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)

sql null sql-like

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

将位图编码为Jpeg

首先,这个问题不是关于"如何将位图保存为磁盘上的jpeg?"

我无法找到(或想到)Bitmap使用Jpeg压缩转换a的方法,但将其保留为Bitmap对象.MSDN清楚地展示了如何将Bitmap保存为JPEG,但我正在寻找的是如何将编码/压缩应用于Bitmap对象,因此我仍然可以在我的代码中传递它,而无需引用该文件.

其背后的原因之一是处理位图的辅助类,但不应该知道使用的持久性方法.

c# encoding jpeg bitmap

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

在WPF MVVM中过滤ObservableCollection

我有一个绑定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)

c# wpf datagrid mvvm

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

在Linq查询中调用函数

如果我想迭代一个集合,并在集合中的每个元素上调用一个函数,我可以使用:

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)

linq

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

如何检测String.Format()中缺少的动态参数

string myString = string.Format("{0}{1}", "foo");
Run Code Online (Sandbox Code Playgroud)

这编译但在运行时失败.我知道为什么,不用担心.任何人都知道一个宏或一个工具,它会检查我的整个解决方案,以便在编码时找到每一个这样的...分心?简单的只检查表达式是否不是变量就足够了.它可能适用于FxCop或StyleCop,但越简单就越好:-D

谢谢

c# string string.format

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

Excel宏可以复制,删除和粘贴而不会丢失复制值

我正在尝试粘贴我之前复制的一些值,但是我正在丢失数据,因为我事先正在清理目标单元格.

这是代码的示例:

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")的内容,以便我以后可以粘贴它?

excel vba excel-vba

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

你能用自动属性激活事件吗?

我想知道我是否可以使用自动属性,仍然能够触发属性更改的事件.这是我目前的课程.(实际的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事件.换句话说:半自动属性是否可能?

c# events automatic-properties

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

自定义通用GetTable

对于我正在处理的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)

c# linq linq-to-entities

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

在c#中使用Bloomberg API?

我想频繁获取更改的货币汇率,如[与美元或指定货币相比的当前英镑,欧元,日元汇率].我用谷歌搜索并从Bloomberg的网站获得Bloomberg API dotnet示例.但我遇到了必要的问题,我确实有几个问题.

  1. 我需要某种Bloomberg许可证吗?

  2. 有人可以告诉从这些API示例开始的位置吗?

c# bloomberg

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