小编Dan*_*rth的帖子

为什么我们可以在课堂外宣布代表?是不是反对OOP概念?

根据oops fundamentels,一切都必须在课堂上.那么为什么我们允许在课堂外创建代表呢?

c# oop

13
推荐指数
3
解决办法
6874
查看次数

具有相同宽度字符的C#.NET多行TextBox

如果您输入多行文本框,我该怎么做呢?

ABCDE

&

ABCDE

所以大E 直接位于小e之下.

如果它们在同一行,我希望它们垂直排列.

另外,使用winforms

.net c# textbox winforms

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

在c#中格式化Int时如何强制使用符号

我想格式化一个整数i(-100 < i < 100),这样:

-99格式为"-99"
9格式为"+09"
-1格式为"-01"
0格式为"+00"

i.ToString("00")
Run Code Online (Sandbox Code Playgroud)

是接近但是当int为正时不添加+号.

有没有办法做到这一点,没有明确区分 i >= 0i < 0

c# tostring

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

如何在Reflection中迭代List

我有一个叫做学生的属性List<Student>.

在反思中,我可以获得学生财产的价值.

现在的问题是如何迭代学生列表.

我需要检查StudentID [某个值]是否在该集合中.

var collection = studentPro.GetValue(studentObj,null);

//I need to iterate like this,

foreach(var item in collection)
{
     if(item.StudentID == 33)
         //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

请帮我.

c# reflection

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

没有使用泛型扩展方法的类型推断

我有以下方法:

public static TEventInvocatorParameters Until
    <TEventInvocatorParameters, TEventArgs>(this TEventInvocatorParameters p,
                                            Func<TEventArgs, bool> breakCond)
    where TEventInvocatorParameters : EventInvocatorParameters<TEventArgs>
    where TEventArgs : EventArgs
{
    p.BreakCondition = breakCond;
    return p;
}
Run Code Online (Sandbox Code Playgroud)

而这堂课

public class EventInvocatorParameters<T>
    where T : EventArgs
{
    public Func<T, bool> BreakCondition { get; set; }
    // Other properties used below omitted for brevity.
}
Run Code Online (Sandbox Code Playgroud)

现在,我有以下问题:

  1. 此扩展方法甚至可以显示所有类型string.
  2. 我不能写new EventInvocatorParameters<EventArgs>(EventABC).Until(e => false);它告诉我"方法的类型参数......不能从用法中推断出来."

我不能使用像这样的泛型类型参数吗?你会如何解决这个问题?
重点:我需要这两个通用参数,因为我需要返回调用此扩展方法的相同类型.


更广泛的图片(没有必要回答问题!):
我正在尝试创建一个流畅的界面来调用事件.基础是这个静态类:

public static class Fire
{
   public static void Event<TEventArgs>(
       ConfiguredEventInvocatorParameters<TEventArgs> parameters)
    where TEventArgs …
Run Code Online (Sandbox Code Playgroud)

.net c# generics extension-methods fluent-interface

12
推荐指数
2
解决办法
2889
查看次数

如何使用自己的用户类型激活延迟加载属性上的二级缓存?

前言:
在我的应用程序中,我将原始WAV数据存储在数据库中byte[].在我的域模型中,有一个PcmAudioStream表示原始WAV数据的类.我创建了一个NHibernate的实现IUserType来转换我的类和byte[].
有几个类使用PcmAudioStream该类,所有类都映射到数据库表.为了避免在从这样的表中检索行时总是加载所有WAV数据,我创建了一个Fluent NHibernate的实现,IUserTypeConvention它指定这些属性应该总是延迟加载.
所有这一切都像一个魅力.

问题:
因为这些内容PcmAudioStream很少发生变化,所以我想将检索到的实例放在二级缓存中.现在,我知道如何为完整的类激活二级缓存,但是如何仅为延迟加载的属性实现此目的呢?


我的域模型的相关部分如下所示:

public class User : Entity
{
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
    public virtual PcmAudioStream FullNameRecording { get; set; }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

映射很简单(注意:这不是我的映射,我使用的是约定,但它是等效的):

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Id(x => x.Id);
        Map(x => x.FirstName);
        Map(x => x.LastName);
        Map(x => x.FullNameRecording).CustomType<PcmAudioStreamAsByteArray>();
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# nhibernate caching fluent-nhibernate

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

将分钟转换为全时C#

我需要转换1815分钟30:15(30小时15分钟)

是否有一种简单的方法可以做到这一点,我错过了?

c# time datetime

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

多DPI系统上的VSTO自定义任务窗口显示内容两次

我正在使用VSTO构建办公室插件.在具有不同DPI设置的多个监视器的系统上,我的自定义任务窗格的内容在具有较高DPI设置的监视器上绘制两次:

在此输入图像描述

只有较小的版本实际上响应用户输入.较大的版本似乎只是一个放大的图像.

我尝试过使用各种DPI相关设置,例如:

  • AutoScaleMode在我的用户控制上.我尝试了所有选项,没有变化.
  • 将过程设置为DPI可识别 - 或不 - 使用SetProcessDpiAwareness.我尝试了所有选项,没有变化.
  • 使用app.manifest并设置dpiAwaretruefalse.没变.

新的Web Addins没有这个问题.此外,内部任务窗格没有此问题.

这是一个已知的问题吗?我怎样才能解决这个问题?

c# powerpoint vsto ms-office office-interop

12
推荐指数
2
解决办法
878
查看次数

生成随机唯一数字的性能问题

我有一种情况,我需要创建成千上万的唯一数字.但是这些数字必须是9位数,不能包含任何0.我当前的方法是生成9位数(1-9)并将它们连接在一起,如果该数字不在列表中,则将其添加到其中.例如

public void generateIdentifiers(int quantity)
{
    uniqueIdentifiers = new List<string>(quantity);
    while (this.uniqueIdentifiers.Count < quantity)
    {
        string id = string.Empty;
        id += random.Next(1,10);
        id += random.Next(1,10);
        id += random.Next(1,10);
        id += " ";
        id += random.Next(1,10);
        id += random.Next(1,10);
        id += random.Next(1,10);
        id += " ";
        id += random.Next(1,10);
        id += random.Next(1,10);
        id += random.Next(1,10);
        if (!this.uniqueIdentifiers.Contains(id))
        {
            this.uniqueIdentifiers.Add(id);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然而,由于越来越多的生成数字是重复的,因此在大约400,000时,该过程确实变慢.我正在寻找一种更有效的方式来执行这个过程,任何帮助将非常感激.

编辑: - 我正在生成这些 - http://www.nhs.uk/NHSEngland/thenhs/records/Pages/thenhsnumber.aspx

c# random performance uniqueidentifier

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

将IQueryable <EntityObject>转换为IQueryable <Specific>

我们正在尝试将一个实例转换IQueryable<EntityObject>为a IQueryable<SpecificEntityObject>,该SpecificEntityObject类型仅在运行时已知.

我们尝试使用下面的代码,但由于类型或名称空间"objType"不存在,因此无法编译.

var t = query.ElementType;
Type objType = typeof(IQueryable<>).MakeGenericType(t);
var typed = query.Cast<IEnumerable<objType>>();


var grouped = typed.GroupByMany(groupBy.Select(grp => grp.Expression).ToArray());
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

c# linq entity-framework casting iqueryable

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