小编Wat*_* v2的帖子

协变指派不起作用

我试图概括通过一个对象的属性的更改通知,IObservable<T>但这是问题的重点.问题的关键在于:以下分配我报告了无效的协方差错误:

protected virtual void OnPropertyChanged<T>(
                      string propertyName, 
                      T oldValue, T newValue)
{
    IPropertyChangedNotification<Student, object> notification = 
        new PropertyChangedNotification<Student, T>(this,
        propertyName, oldValue, newValue);

    ...
}
Run Code Online (Sandbox Code Playgroud)

这报告:

无法隐式转换 PropertyChangedNotification<UsingSubjectToWatchProperty.Student, T>IPropertyChangedNotification<UsingSubjectToWatchProperty.Student, object>.存在显式转换(您是否错过了演员?)

这是完整的代码:

class Student
{
    private ISubject<IPropertyChangedNotification<Student, object>> _subject = 
       new Subject<IPropertyChangedNotification<Student, object>>();;
    private string _name = null;

    public string Name
    {
        get
        {
            return _name;
        }
        set
        {

            var oldValue = _name;
            _name = value;

            OnPropertyChanged<string>("Name", oldValue, _name);
        }
    }

    protected virtual void OnPropertyChanged<T>(string propertyName, T …
Run Code Online (Sandbox Code Playgroud)

.net c# system.reactive

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

与委托有多个参数且没有 EventArgs 的事件集成

似乎没有FromEvent或方法的重载,仅在有多个参数且没有 的情况下FromEventPattern才会转换为具有该IObservable<T>类型的事件。TDelegateEventArgs

例如,我们似乎无法将以下内容转换为可观察量。

public event Action<int, int> SomethingHappened;

public event Func<string, int> SomethingElseHappened;
Run Code Online (Sandbox Code Playgroud)

我们要么必须EventArgs在某个地方有一个,要么TDelegate在其签名中只有一个参数。因此,以下内容是可转换的,因为它们有一个EventArgs隐式委托。

public event NameChangedHandler NameChanged;
public event EventHandler RollNumberChanged;
public event EventHandler<AgeChangedEventArgs> AgeChanged;


public delegate void NameChangedHandler(
                     object sender, 
                     NameChangedEventArgs e);
Run Code Online (Sandbox Code Playgroud)

这个也可以转换,因为T它的参数只有一个。

public event Action<Tuple<string, string>> ClassChanged;
Run Code Online (Sandbox Code Playgroud)

如果我遇到这样的事件我该怎么办:

public event Action<T1, T2...> ItHappened;
Run Code Online (Sandbox Code Playgroud)

c# system.reactive

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

Swing中的JFrame窗口是在自己独立的线程上运行的吗?

我有三个问题密切相关,因为它们是彼此诞生的,代表了一个思路,所以我在一个问题下发布它们.如果我单独发布它,我无法帮助我构建我的问题的大局.

1)你能用简单的语言解释一下SwingUtilities.invokeLater吗?我理解线程,我敢说了很多,但文档的语言仍然让我感到困惑.它说:

导致doRun.run()在AWT事件派发线程上异步执行.这将在处理完所有挂起的AWT事件后发生.当应用程序线程需要更新GUI时,应使用此方法.在以下示例中,invokeLater调用将Runnable对象排队到doHelloWorld 事件调度线程上,然后打印消息.

如果我付出一些努力来理解所说的内容,我认为这就是它所说的,但我不能确定它.我想它说:

invokeLater方法仅在应用程序的主线程上调度主窗口创建和调度程序/消息泵的设置,而不是在单独的线程上.它通过发布消息来创建窗口并在主/主应用程序线程上设置它.换句话说,主要话题是对我们说:"你要我创建的窗口将在我完成其他现在的工作之后创建."

但后来有两件事让我感到困惑,我将其列为下面的两个问题.

2)那么为什么我需要将新窗口的消息循环实现为Runnable.这意味着我想要一个单独的线程来执行该消息循环.

3)我在创建窗口的函数和窗口的消息循环函数中打印出当前线程Id,它们都是不同的线程.那么,Swing中的每个窗口都在自己的线程上运行?那太疯狂了.你能告诉我这里发生了什么吗?如果你能在一段或两段中解释在Swing中创建的GUI应用程序的线程模型?

public static void main(String[] args) {
        SwingUtilities.invokeLater(new MainWindowEventLoop());
        System.out.println(String.format("Main thread %1$d started.",
                            Thread.currentThread().getId()));
    }

public class MainWindowEventLoop implements Runnable {

    @Override
    public void run() {
        JFrame mainWindow = new MainWindow("Main Window");
        System.out.println(String.format("Main window loop running on thread %1$d.", 
                            Thread.currentThread().getId()));
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

主线程1开始了.

主窗口循环在线程14上运行.

java swing jvm event-dispatch-thread

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

有关汇编中汇编的汇编入口点的信息在哪里?

我曾经认为一个程序集只能有一个main()方法,直到我在哥本哈根的微软办公室的视频讲座中看到Jon Skeet的MiscUtil.

所以,我写了这个有两个main()方法的小应用程序,如下所示:

namespace ManyMains
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
            Console.ReadKey();
        }
    }

    class YetAnotherProgram
    {
        static void Main()
        {
            Console.WriteLine("Yet another program.");
            Console.ReadKey();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Visual Studio中设置了StartUp对象并且它有效.好吧,没有理由感到苦恼.然后,我想看看这个信息存储在程序集中的确切位置,所以我在反射器中打开了编译后的二进制文件,并且完全看不到这种效果的元数据.

我想知道是否将这种信息写入清单或PE图像的某些COFF标题中,这些标题在反汇编程序中无法看到但可以在十六进制编辑器中看到?

c# reflection assemblies entry-point

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

Linq to Entities是什么?

有很多术语,因为噪音很难学习你所追求的东西.

Linq to Entities只是对使用ADO.NET实体框架生成的实体使用Linq查询的做法吗?或者,这是一项独立的技术吗?

如果它不是一个单独的技术,为什么它有另一个令人困惑的名称,好像它是?

linq-to-entities entity-framework ado.net-entity-data-model entity-framework-4

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

如何比较两个System.Types?

我以前做过这么多次,但是我的记忆让我失望了,我觉得这有点愚蠢.

如何比较两种运行时类型?我假设System.Type不会覆盖==运算符,因此运算符执行引用相等性检查.

我想做一个价值平等.喜欢:

someObject.GetType() == GetTypeFromSomeAssemblyUsingReflection(
                                                "Namespace.TypeName",
                                                objAssemblyToGetTheTypeFrom);
Run Code Online (Sandbox Code Playgroud)

我可以使用,IsAssignableFrom()但这不会是我想要做的准确,因为它会扩大范围.我想把这些类型等同于我所做的:

if obj is Cat // where Cat is the name of a class
Run Code Online (Sandbox Code Playgroud)

要么

if ( (obj as Cat) != null )
Run Code Online (Sandbox Code Playgroud)

c#

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

来自两个数据库的实体框架模型

是否可以从两个数据库中创建实体模型,表中的所有关系都反映在模型中?你是怎样做的?

我指的是ADO.NET Entity Framework第4版.

entity-framework-4

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

在UI线程上使用await和阻塞调用一样吗?

只是阅读和思考:如果我await在主UI线程中调用一个方法,这就等于是一个阻塞调用,对,因为没有调用UI线程的线程?

例如:

int Main()
{
    // This would be a blocking call, right?
    await PrintTwoMillionTimes("Hello");

    Console.WriteLine("Phew! Done!");
}
Run Code Online (Sandbox Code Playgroud)

c# multithreading asynchronous task

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

ASP.NET MVC模型绑定与jQuery ajax请求

我的MVC代码中有一个服务器端对象,如下所示:

class Person
{
  public long Id { get; set; }

  public string Name { get; set; }

  public IList<Friend> Friends { get; set; } 
}

class Friend
{
  public long Id { get; set; }

  public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

从jQuery客户端,我正在发出ajax请求并发送以下数据(为了可读性而引入了换行符):

var personId = $(...
var personName = $(...

var friends = []; // array of associative arrays

for (var i = 0; i < _friends.length; i++) // _friends is is a global array object and …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery model-binding

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

任何.NET类,它使查询字符串给定键值对等

.NET框架中是否有一个类,如果给定一个序列/可枚举的键值对(或者其他任何我对此格式不严格)可以创建如下的查询字符串:

?foo=bar&gar=har&print=1
Run Code Online (Sandbox Code Playgroud)

我自己可以完成这个微不足道的任务,但我想我会要求自己避免重新发明轮子.当单行代码可以做到的时候为什么所有那些弦乐体操呢?

.net c#

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