小编jp2*_*ode的帖子

C#:Interface和Abstract来启用实现和覆盖

我必须设计大约5个不同的课程.

这些类的许多部分将非常相似,但它们会有轻微的差异(当然).

如果我写了interface一个我设计的每个类都实现了,那么必须完全编写每个abstract方法interface.

如果我编写一个我的base每个设计类派生的类,那么每个类将自动在virtual我在base类中创建的方法中具有一些功能,但是它们都需要被覆盖,调用base功能,包含细微的差异.

有没有办法结合这些功能?我喜欢要求实现interface的方法,但我也喜欢设置由base类预先编程的功能.

我在这里和其他地方看过很多例子,但看起来并没有人像我所描述的那样.它甚至可能吗?

编辑:所以,鉴于此:

abstract class Base
{
    virtual protected void OptionallyOverridable() {}
    abstract protected void SubclassMustImplement();
}
Run Code Online (Sandbox Code Playgroud)

...有没有办法写出这样的东西:

abstract class Base2
{
    DataEventType EventType;
    DataChangedEventHandler OnDataChange;

    virtual protected void OptionallyOverridable() {}
    abstract protected void SubclassMustImplement() {
      // values here are guaranteed
    }
}
Run Code Online (Sandbox Code Playgroud)

c# implementation overriding interface abstract

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

Linq查询OrderBy Multiple

我有一个List<Employees>集合,我试图选择Active员工.

我一定做错了,因为我在这里看到很多例子表明我可以做到这一点,但Visual Studio告诉我我不能,因为:

无法将类型'System.Linq.IOrderedEnumerable'隐式转换为'System.Collections.Generic.List'.存在显式转换(您是否错过了演员?)

这张照片出了什么问题?LastNameFirstName(正如你可能怀疑)都是字符串值,并且Active是一个布尔值.

范围变量

DataGridView1.DataSource = null;
List<AcpEmployee> emps = from e in employeeInfo.Employees
                         where e.Active 
                         orderby e.LastName, e.FirstName descending
                         select e;
Run Code Online (Sandbox Code Playgroud)

c# linq linq-to-objects

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

C# 函数指针

我正在创建一个用户控件,我希望它对我的数据库类一无所知。

但是,我需要该数据库类的某些功能(我需要根据员工编号获取员工的姓名)。

我想做的是在我的用户控件中创建一些我可以在使用它的应用程序中连接的东西,就像我连接一个点击事件或类似的东西。

我以前从未在 C# 项目中真正创建过这样的东西,所以我不知道该怎么称呼它。我想它必须存在。

我想在我的数据库类中调用的函数具有以下签名:

public string GetEmployeeName(int employeeNumber);
Run Code Online (Sandbox Code Playgroud)

有人能告诉我我想要做什么吗?

如果这是困难的事情,一个例子也很好。

c# user-controls

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

InvalidOperationException:ObjectDataSource找不到具有参数的非泛型方法:

我正在尝试为本地ASP.NET页面编写ObjectDataSource代码.

阅读MSDN上的帮助文件总是让我摸不着头脑,想知道他们究竟会暗示什么.例如,我不确定我的TypeName应该是什么(尽管该链接有一个有趣的例子).

一旦我掌握了基础工作,我就会冒险进入更深的水域.

我的*.aspx文件的第一行包含我的定义:

<%@ Page Title="Reporter" Language="C#" MasterPageFile="~/local.Master"
    AutoEventWireup="true" CodeBehind="Reporter.aspx.cs"
    Inherits="AcpServiceNS.Reporter" %>
Run Code Online (Sandbox Code Playgroud)

在该页面中,我有TextBox控件名为txtStartDatetxtEndDate和一个编号命名DropDownList控件的ddlStartTime,ddlEndTime,ddlAction,ddlFilter1,和ddlFilter2.

我还有以下ObjectDataSource:

<asp:ObjectDataSource ID="dsReport" runat="server"
     SelectMethod="GetData"
     TypeName="System.Data.DataTable"
     ConvertNullToDBNull="True" >
  <SelectParameters>
    <asp:ControlParameter ControlID="txtStartDate" Name="startDate" PropertyName="Text" Type="String" DefaultValue="" />
    <asp:ControlParameter ControlID="ddlStartTime" Name="startTime" PropertyName="Text" Type="String" DefaultValue="" />
    <asp:ControlParameter ControlID="txtEndDate" Name="endDate" PropertyName="Text" Type="String" DefaultValue="" />
    <asp:ControlParameter ControlID="ddlEndTime" Name="endTime" PropertyName="Text" Type="String" DefaultValue="" />
    <asp:ControlParameter ControlID="ddlAction" Name="action1" PropertyName="Text" Type="String" DefaultValue="" />
    <asp:ControlParameter ControlID="ddlFilter1" …
Run Code Online (Sandbox Code Playgroud)

c# asp.net gridview objectdatasource

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

如何编写触发器?

每当为我的对象赋值时,我希望我的C#代码调用一个事件.

我到底该怎么做呢?

class MyClass {

  ManualResetEvent mre;

  public MyClass() {
    mre = new ManualResetEvent(false);
    Data = null;
  }

  public object Data { get; set; }

  void DataSet(object sender, EventArgs e) {
    Console.WriteLine("object Data has been set.");
    mre.Set();
  }

}
Run Code Online (Sandbox Code Playgroud)

代表似乎不是我需要的.也许是一个事件?如果是这样,我将如何撰写此类活动?

MyClass mc;

void processA() {
  mc = new MyClass();
  mc.Data = GetDataFromLongProcess();
}
Run Code Online (Sandbox Code Playgroud)

c# events multithreading

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

ASP.NET使用超链接而不是按钮

我想在我的表单中添加一个Logout链接,这样我们的员工就可以退出他们正在处理的工作.

我的应用程序背后的代码很简单:

protected void Logout_Click(object sender, EventArgs e) {
   MasterPage.Logout();
}
Run Code Online (Sandbox Code Playgroud)

一个asp.Button我可以连接最多的代码onClick事件.

如何使用asp.Hyperlink控件调用此方法?

c# asp.net visual-studio-2010

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

如何在Windows Mobile 6.5上删除额外的开始菜单图标?

我有一个在我们的生产车间使用的Windows Mobile 5应用程序,用于扫描条形码和更新SQL Server上的数据.

我们很快就会购买新设备,它们配备了Windows Mobile 6.5 Professional.

我一直在使用模拟器来启动和运行我的应用程序,并熟悉新的操作系统功能.

我似乎无法解决的一个问题是设备上的"开始菜单"混乱的所有图标.

截图

看到上面的截图?这是单击开始菜单时弹出的内容!

那不行!

我们的员工不会说英语,我需要非常简化桌面.电子邮件未在这些上配置,它们没有Internet连接,没有发短信等.

我应该删除所有这些并在那里放置一个链接到我们的应用程序.

在Windows Mobile 5中,我能够删除所有这些多余的垃圾,这样我们的员工就不会感到困惑.

移动5截图

如何清除Windows Mobile 6.5下的"开始"菜单?

我想将这些项目显示为LIST而不是ICONS.那可能吗?

windows-mobile windows-mobile-6.5

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

我将如何编写String.Format扩展方法?

我在C#代码中使用String.Format可能比if声明更重要.

string ask = String.Format("Continue using [{0}]?", value);
Run Code Online (Sandbox Code Playgroud)

我只想到我经常使用它.

接下来,我开始考虑为它创建扩展方法有多.

ask.Format("Continue using [{0}]?", value);
Run Code Online (Sandbox Code Playgroud)

所以,我得看看String.Format,并且它有很多重载,因为有许多方法可以调用它.

嗯......这使事情变得复杂.

是否有一种简单的方法来编写一个扩展方法,它只是建立在System.String命名空间中已经存在的重载之上?

以下是我想看到的内容:

public static class Extensions
{
  public static String Format(this String str, String formatText, /* What goes here? */)
  {
    return str.Format(formatText, /* Magic */);
  }
}
Run Code Online (Sandbox Code Playgroud)

我想我可以写一个重载来匹配每个String.Format重载,但这可能没有必要.

c# string extension-methods

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

创建匿名类的集合

我正在编写一些代码,我想使用C#的匿名功能来完成它.

我正在根据从SQL Server返回的DataTable编写摘要.

有很多方法我已经知道了古典C#(???),但我有兴趣享受一点乐趣.

所以,这是我想要的匿名类的类型:

// Employee
var emp = new {
  Badge = "000000",
  Name = "No Name",
  Parts = new List<Part>(),
  Days = new List<DateTime>(),
};

// Part
var part = new {
  SerialNumber = "N/A",
  Date = DateTime.MinValue,
  Badge = "000000",
};
Run Code Online (Sandbox Code Playgroud)

现在,当我迭代我的DataTable条目时,我想要按部分排序SerialNumber.

我要做的第一件事就是将数据分解成几天.

private void TestMethod(DateTime minDate, DateTime maxDate, DataTable table) {
  int days = 1;
  var nextDay = minDate.AddHours(24);
  foreach (DataRow row in table.Rows) {
    var dateTime = (DateTime)row["Date_Time"];
    var emp …
Run Code Online (Sandbox Code Playgroud)

c# anonymous-types visual-studio-2010

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

isset()和empty()似乎没有修复"未定义的索引"通知

该公司在代码中保留了他们的PHP错误,但我把它打开,看看为什么我的某些东西不起作用.

但是,现在我收到了数百Undefined index封我想要关闭的消息,以便我可以从MY代码中找到消息.

这是一个给出许多错误的特定块:

final public function getAttribute($name) {
  $value = '';
  if(is_array($this->attributes[$name]) === false) { // Notice: Undefined index: name
    $value = trim($this->attributes[$name]);
  } else {
    $value = trim(implode(' ', $this->attributes[$name]));
  }
  return $value;    
}
Run Code Online (Sandbox Code Playgroud)

为了消除这些通知,我按照帖子为什么要检查isset()和!empty()来写这样:

final public function getAttribute($name='') {
  if (!isset($name) || empty($name)) {
    return '';
  }
  $value = '';
  if(is_array($this->attributes[$name]) === false) { // Notice: Undefined index: name
    $value = trim($this->attributes[$name]);
  } else {
    $value = trim(implode(' ', $this->attributes[$name]));
  } …
Run Code Online (Sandbox Code Playgroud)

php

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