小编Vag*_*aus的帖子

面向对象的数据库 - 为什么大多数公司不使用它们

我对编程很新(刚刚完成大学).

在过去的4年里,我一直在思考面向对象的开发以及这种方法的众多优点.

我的问题是

在开发应用程序中使用纯面向对象数据库不是更容易吗?

为什么面向对象的数据库不像关系那样分散?

从我的观点来看,使用OO数据库是有意义的,后者将避免在表上复杂对象的映射所需的众多构造.

oop database-design object-oriented-database

24
推荐指数
3
解决办法
5403
查看次数

在Android中实例化对象时是否可以绕过构造函数

Android有没有办法在不调用任何构造函数的情况下实例化对象?

在Java中,Sun有sun.reflect.ReflectionFactory.getReflectionFactory().newConstructorForSerialization(),在.Net中我们有System.Runtime.Serialization.FormatterServices.GetUninitializedObject()但我在Android平台上找不到类似的东西.

android constructor objectinstantiation

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

查找方法的声明类型

给定MethodDeclarationSyntax对象,如何找出方法的声明类型?

我的实际问题是我需要弄清楚引用的方法是否正在实现接口方法.

例如,给定下面的代码,如果我有Dispose()方法的MethodDeclarationSyntax ,那么如何判断它是IDisposable.Dispose()的实现?

using System;
abstract class InterfaceImplementation : IDisposable
{
    public abstract void Dispose();
}
Run Code Online (Sandbox Code Playgroud)

我试图获取方法的声明类型(并检查类型)没有成功(Parent属性给我回到InterfaceImplementation类).

我也试图抓住方法的语义符号:

var methodSymbol = (MethodSymbol) semanticModel.GetDeclaredSymbol(methodDeclaration);
Run Code Online (Sandbox Code Playgroud)

但无法发现任何可以帮助我的东西.

想法?

.net c# roslyn

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

为什么将 double 转换为 double 会发出 conv.r8 IL 指令

C# 编译器在从进行转换时是否有任何理由发出conv.r8double -> double

这看起来完全没有必要(从 int -> int、char -> char 等进行转换)不会发出等效的转换指令(正如您在该I2I()方法生成的 IL 中看到的那样)。

class Foo
{
    double D2D(double d) => (double) d;
    int I2I(int i) => (int) i;
}
Run Code Online (Sandbox Code Playgroud)

IL 的结果为:

.class private auto ansi '<Module>'
{
} // end of class <Module>

.class private auto ansi beforefieldinit Foo
    extends [System.Private.CoreLib]System.Object
{
    // Methods
    .method private hidebysig 
        instance float64 D2D (
            float64 d
        ) cil managed 
    {
        // Method begins at RVA 0x2050 …
Run Code Online (Sandbox Code Playgroud)

c# cil compilation intermediate-language

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

Roslyn 使用 MemberAccessExpressionSyntax 而不是 QualifiedNameSyntax

下面的代码中,我希望对System.Action类型的两个引用都表示为QualifiedNameSyntax,但第二个引用表示为MemberAccessExpressionSyntax

那是对的吗?如果是这样,为什么不能是 a QualifiedNameSyntax

class Foo
{
    public void M(object o)
    {
        var t = typeof(System.Action); // 1
        switch(o)
        {
            case System.Action: // 2
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

roslyn c#-9.0

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