小编Rah*_*han的帖子

System.Enum与Flags的组合

请考虑以下枚举:

[System.Flags]
public enum EnumType: int
{
    None = 0,
    Black = 2,
    White = 4,
    Both = Black | White,
    Either = ???, // How would you do this?
}
Run Code Online (Sandbox Code Playgroud)

目前,我已经编写了一个扩展方法:

public static bool IsEither (this EnumType type)
{
    return
    (
        ((type & EnumType.Major) == EnumType.Major)
        || ((type & EnumType.Minor) == EnumType.Minor)
    );
}
Run Code Online (Sandbox Code Playgroud)

是否有更优雅的方式来实现这一目标?

更新:从答案中可以看出,EnumType.Either在枚举本身中没有位置.

.net c# enums

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

为什么在Class <T>中声明Delegate <T>会生成VS警告?

关于是否强类型事件参数,有很多讨论.这个问题与此无关.我有以下课程(仅包括相关代码):

public abstract class Thread<TSender, TEventArgs>:
    System.IDisposable
    where TSender: Thread<TSender, TEventArgs>, new()
    where TEventArgs: System.EventArgs, new()
{
    public delegate void ThreadEventHandler (Thread<TSender, TEventArgs> sender, ThreadEventArgs e);

    // This declaratino generates a VS 2012 warning.
    public delegate void ThreadProcessIterationEventHandler<TSender, TEventArgs> (TSender sender, TEventArgs e);
}
Run Code Online (Sandbox Code Playgroud)

第二个代表的声明生成VS2012警告:

1. Type parameter 'TSender' has the same name as the type parameter from outer type 'Thread<TSender,TEventArgs>'

2. Type parameter 'TEventArgs' has the same name as the type parameter from outer type 'Thread<TSender,TEventArgs>'
Run Code Online (Sandbox Code Playgroud)

这种结构在逻辑上是正确的,因为其目的是为派生类提供包装的线程机制.它当然是合法代码,并按预期编译和运行.

我本来以为,有一个自指向约束可能被认为是不好的做法,但为什么TSender …

.net c# generics delegates

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

即使在 C# 中忙碌时也强制控制台应用程序打印

我有一个简单的控制台应用程序,如下所示:

private static void Main (string [] args)
{
    System.Console.WriteLine("Initializing context...");
    Database.Context.Initialize();

    System.Console.WriteLine("Creating server...");
    var server = new Server();
    server.OnStarting += Server_OnStarting;
    server.OnStarted += Server_OnStarted;

    System.Console.WriteLine("Starting server...");
    server.Start();
}

private static void Server_OnStarting (object sender, EventArgs e)
{
    System.Console.WriteLine("Server_OnStarting.");
}

private static void Server_OnStarted (object sender, EventArgs e)
{
    System.Console.WriteLine("Server_OnStarted.");
}
Run Code Online (Sandbox Code Playgroud)

服务器启动方法:

public bool Start ()
{
    bool result = false;

    lock (this._SyncRoot)
    {
        if (!this.Running)
        {
            this.Stopwatch.Reset();

            this.RaiseOnStarting();

            this.Running = true;
            this.Terminate = false;
            this.ThreadObject = new System.Threading.Thread(new System.Threading.ThreadStart(this.ProcessInternal)); …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading console-application

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

使用NAudio播放原始PCM(输出噪音但在Audacity中打开正常)

我正在使用NAudio(1.7.1.17)WasapiLoopbackCapture工作正常,我可以使用以下格式在Audacity中打开保存的原始PCM:

原始PCM格式

调用面向.NET 4 x86的代码.该文件是10秒的记录总计[3,515,904字节].

捕获:

var device = WasapiLoopbackCapture.GetDefaultLoopbackCaptureDevice();

using (var capture = new WasapiLoopbackCapture(device))
{
    capture.ShareMode = AudioClientShareMode.Shared;
    capture.DataAvailable += WasapiCapture_DataAvailable;
    capture.RecordingStopped += WasapiCapture_RecordingStopped;

    // Verified that [capture.WaveFormat] is [44.1KHz, 32 bit 2 ch].

    capture.StartRecording();
    Thread.Sleep(TimeSpan.FromSeconds(10));
    capture.StopRecording();
}

private void WasapiCapture_DataAvailable (object sender, WaveInEventArgs e)
{
    // Write [e.BytesRecorded] number of bytes from [e.Buffer] to a file.
}

private void WasapiCapture_RecordingStopped (object sender, StoppedEventArgs e)
{
    // Verified that e.Exception was null.
}
Run Code Online (Sandbox Code Playgroud)

回放:

var file = new FileInfo(/* …
Run Code Online (Sandbox Code Playgroud)

.net c# audio pcm naudio

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

BigInteger如何在内部存储值?

BigInteger类有一个返回字节数组的方法.这是否表明该类在内部使用字节数组以存储数字?

知道这一点非常重要,以便选择正确的数据类型来操作二进制数据.例如,如果类使用Int64数组,那么类似的数组可以更有效地通过任何调用函数来操作原始数据.

作为一个例子,我调用ToByteArray方法来遍历寻找特定二进制模式的字节.

.net c# biginteger

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

Silverlight和实体框架解决方案的策略

我是Silverlight的新手,正在开发一个ASP.NET Web应用程序,它需要一个Silverlight项目来记录网络摄像头音频/视频流.

该解决方案包含一个包含业务实体的库项目,如[User],[BillingInfo]等,以及ASP .NET Web应用程序.

由于Silverlight不支持EF,如何在Silverlight中使用强类型实体对象?我不需要访问Context对象,但需要访问Entity类.

我使用Code First,因此必须使用Annotations标记实体,Silverlight将无法识别,因为DataAnnotations程序集不可参考.如果需要,切换到模型优先也是一种选择(尽管不太可取).

有没有人处理类似的情况?在Silverlight中获取强类型实体的最佳方法是什么?任何文章或参考资料也会有所帮助.谢谢.

技术(如果需要,可以选择升级):ASP .NET Web应用程序(.NET 4)实体框架5 Silverlight 5

c# asp.net silverlight entity-framework

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

无需中央服务器的 P2P 握手

我编写了一个客户端-服务器应用程序,旨在通过局域网交换文件(除其他外)。在服务器模式下,应用程序侦听具有特定标识标头的 TCP 连接。在客户端模式下,它尝试与用户提供的 IP 地址建立 TCP 连接。

我现在需要调整这个应用程序以在互联网上工作。没有太多的网络编程经验,我不知道如何在没有某种中央服务器(用于宣布存在等)的情况下实现这一目标。这不是一个选项。

假设我的应用程序在家庭网络后面的机器上以服务器模式运行。您(读者)有客户端模式的应用程序,我们需要连接。我们都没有静态 IP 地址。客户端有没有办法到达服务器?服务器和客户端都可以找出他们的公共 IP 地址,但除此之外,我不知道该怎么做。

任何指导将不胜感激。

编辑:根据答案,需要进行一些澄清。我的问题不是关于发现。客户端和服务器都可以查询它们的公共地址,用户可以通过其他媒介交换这些 IP。问题是,一旦知道对方的 IP 但双方都在没有适当端口转发的网络后面,如何建立连接。例如,我的应用程序使用端口 51200 作为默认端口。

.net c# networking p2p network-programming

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

删除using语句并解析Visual Studio 2010中的每个引用(C#)

我需要一种方法using从代码中删除所有语句并完全限定引用的代码行.例:

之前:

using System.Windows.Forms;
namespace XYZ
{
    class Temp
    {
        public void IRFunction()
        {
            MessageBox.Show("Hello!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

后:

namespace XYZ
{
    class Temp
    {
        public void IRFunction()
        {
            System.Windows.Forms.MessageBox.Show("Hello!");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我假设解决方案也会自动回答以下问题:如何枚举符合using语句的引用名称空间,并可用于解析代码中的引用.

c# using visual-studio-2010 resolve visual-studio

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

使用反射验证模板模式的代码

我正在开发一个大型项目,其中一个基类有数千个派生自它的类(多个开发人员正在研究它们).期望每个类重写一组方法.我首先使用符合可接受模式的代码模板生成了数千个类文件.我现在正在编写单元测试,以确保开发人员没有偏离这种模式.以下是生成的示例类:

// Base class.
public abstract partial class BaseClass
{
    protected abstract bool OnTest ();
}

// Derived class. DO NOT CHANGE THE CLASS NAME!
public sealed partial class DerivedClass_00000001: BaseClass
{
    /// <summary>
    /// Do not modify the code template in any way.
    /// Write code only in the try and finally blocks in this method.
    /// </summary>
    protected override void OnTest ()
    {
        bool result = false;
        ComObject com = null;
        // Declare ALL value and reference type …
Run Code Online (Sandbox Code Playgroud)

.net c# reflection unit-testing standards-compliance

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

浏览器和应用程序中的颠倒文本

看看这个问题的答案.倒置文本是如何显示为文本的?换句话说,我期待它是一个图像.

html

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