标签: class-design

我可以使用全局变量初始化类变量吗?(红宝石)

我是否为这种作业创建了额外的方法?@@variable = @global_variable为什么?我希望有一些变量可以通过我的脚本访问值和定义,并且只有一个定义位置.

@global_variable = 'test'

class Test

@@variable = @global_variable

  def self.display
    puts @@variable
  end
end

Test.display #gives nil
Run Code Online (Sandbox Code Playgroud)

ruby scope class-design class-variables

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

执行时间差异,有没有?

考虑一下这段代码:


class A {
  void methodX() {
  // snip (1 liner function)
  }
}

class B {
  void methodX() {
   // same -code
  }
}
 

现在我可以去的其他方式是,我有一个类(AppManager),其大多数成员是静态的(从遗留代码,不建议我单身;))


class AppManager {
  public:
  static void methodX(){
   // same-code
  }
}
Run Code Online (Sandbox Code Playgroud)

应该首选哪一个?由于两者都是内联的,因此不应存在运行时差异,对吧?
哪种形式更清洁?

c++ class-design

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

框架给我关于无法直接启动的错误

我创建了web项目,并为框架添加了新的类库.该框架包括DAL.但补充说明.不运行这个让我没有失败.runnig给我错误:

"无法直接启动具有类库的输出类型的项目

要调试此项目,请将可执行项目添加到此解决方案,该项目引用库项目.将可执行项目设置为启动项目"

请帮帮我...

.net c# frameworks class-design

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

类设计C#命名空间分离

我仍在尝试分析函数的分离以及它如何应用于类创建和命名空间包含.我有一个自定义类SoftwareComponent,当呈现给用户时,通常会显示为ListItem.创建ToListItem方法是个好主意吗?我担心,因为我现在已经在类中放置了一个依赖项,需要包含System.Web.UI.WebControls命名空间.

    public ListItem ToListItem()
    {
        ListItem li = new ListItem();
        li.Text = ComponentName + " (+" + ComponentCost + ")";
        li.Selected = Selected;

        return li;
    }
Run Code Online (Sandbox Code Playgroud)

我的另一个倾向是根据类本身之外的属性从SoftwareComponent创建一个ListItem.请提供关于哪种方法更合适/更好的任何想法.

c# architecture class-design

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

构造函数中的业务逻辑 - C#/ Linq to Sql

我正在扩展(不确定这是否是正确的词)在Linq to SQL数据库模型中生成的部分Cart类.

业务逻辑是每个客户只能有一个购物车.如果客户没有购物车,则应该创建; 如果客户有购物车,则应退回.

这是我正在做的事情:

public partial class Cart
{
    //the rest of the Cart class is in the .dbml file created by L2S
    public Cart(int userId)
    {
        Cart c = GetCurrentCart(userId);
        this.CartId = c.CartId ;
        this.UserId = c.UserId;
    }

    public Cart GetCurrentCart(int userId)
    {
        Cart currentCart = new Cart();

        // if cart exists - get it from DB
        //if not - create it, save in DB, and get if right out
        //all of this is done with Linq …
Run Code Online (Sandbox Code Playgroud)

c# class-design .net-3.5 linq-to-sql

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

C#类的构造函数顺序:参数化,默认和静态?

假设我有一个包含3个构造函数的类,一个默认(无参数)构造函数,一个参数化构造函数和一个静态构造函数.像这样:

public MyClass()  { ... }
public MyClass(string arg) : this()  { ...  }
static MyClass()  { ... }
Run Code Online (Sandbox Code Playgroud)

假设我调用参数化构造函数,这些构造函数以什么顺序执行?

我认为它是静态的,然后参数化,然后默认.但是......我的经历并不同意.


背景:我有一个应用程序嵌入引用的DLL作为资源.在运行时,应用程序通过注册程序集解析程序

static MyClass()
{
    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(Resolver);
}
Run Code Online (Sandbox Code Playgroud)

Resolver方法定义如下:

static System.Reflection.Assembly Resolver(object sender, ResolveEventArgs args)
{
    ....
} 
Run Code Online (Sandbox Code Playgroud)

我知道解析器可以按照它选择的任何方式生成装配.在我的应用程序的情况下,它做了一个

Assembly.GetExecutingAssembly().GetManifestResourceStream(name);
Run Code Online (Sandbox Code Playgroud)

其中name是嵌入资源的名称.然后读取该资源的所有字节,并对读取的字节块执行Assembly.Load(byte []).

起初,这可能听起来很奇怪,但它确实有效.

你可能会说,为什么世界上你会嵌入一个集会,而不仅仅是ILMerge? 好问题.我认为我需要嵌入因为嵌入式程序集已签名,而且我没有重新签署合并程序集的密钥.所以我嵌入了.

问题是:假设我在类上声明了一个私有实例成员变量,该变量是嵌入式程序集中定义的类型.在我的情况下,它是一个枚举,我也初始化该枚举的值.

现在,如果静态构造函数已经运行,那么该私有成员上的初始化程序将没有问题.但我看到的是"找不到文件"错误 - 您的基本Fusion错误.

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'MyApp, Version=1.1.4.1, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c' or one of its dependencies. The system cannot find the …
Run Code Online (Sandbox Code Playgroud)

.net constructor class-design fusion

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

接口dll中的类实现?

我的问题:在应用程序内部,所有接口都在自己的dll中声明(例如,项目"接口").

在项目界面内部,也有许多类实现.

现在我需要在另一个项目中使用这个已实现的类之一并获得环依赖项,因为该项目也是项目接口中的引用.

那么,绕过这种环依赖的最佳方法是什么?这可能是应用程序设计中的一个大错误吗?

示意图:

IBigInterface.cs(一个文件中的所有内容):

interface ISomeInterfaceA
{
    void SomeFunctionA(ClassB x);    // ClassB from newProject.cs
    void SomeFunctionB();
}

//
// etc.
//
class ClassA
{
    //
    // Code
    //
}
Run Code Online (Sandbox Code Playgroud)

newProject.cs(一个文件中的所有内容):

class ClassB
{
    //
    // used in interfaces.dll
    //
}

class ClassC
{
    void SomeFunction(ClassA a)    // ClassA from IBigInterface.cs
    {
        //
        // do something
        //
    }
}
Run Code Online (Sandbox Code Playgroud)

我想到的第一件事就是...... 喜欢:

IBigInterface.cs:

interface ISomeInterfaceA
{
    void SomeFunctionA(IInterfaceB x);    // use interface instead of a class
    void SomeFunctionB();
}

interface …
Run Code Online (Sandbox Code Playgroud)

c# architecture class-design interface

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

Javascript数据结构

我想知道是否有可能做这样的事情:

if (mb == null || typeof (mb) != "object") {
    var mb = new Object();
}


mb = {
    tests: {
        onAnimals: {
            test: function() {
                return "";
            }
        }
        onHumans: {
            test: function() {
                return "";
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试它时,我可以看到测试,但当我进一步指出时,我无法看到动物/ onHumans.

javascript对我来说还是新手,所以希望你能提供帮助.

javascript class-design

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

怀疑接口的实现

首先,这只是一个面向对象的编程问题,并不特别适用于任何语言.

这对我来说非常尴尬.这件事发生在我的工作中,我太害羞了,无法向同事澄清这一点,因为这表明我对面向对象编程的理解不足.所以这是事件:

有它实现接口I.这个接口有M. A类定义了体或者说此方法的实现的方法的A类.现在我有一个工具,使用它我可以找出哪些其他类或程序使用,或者换句话说,调用A类 - >方法M.When我用这个工具,它不返回任何结果; 我没有上课的指示是调用方法M.

当我分享我的观察与资深同事,他干脆跑到接口I - >法男,并在此所用的工具.它返回了不少结果.他告诉我,这些都是类或调用子程序M的方法,让我继续.

这个结果显然是实现接口I的那些类的列表.但我不明白的是,这是如何调用类A - >方法M的类或方法的集合.因为我自信地告诉我的同事没有类调用方法M,在他向我展示结果列表后,我太尴尬地问他怎么样,我正在寻找的结果.

知道我的同事暗示的是什么吗?

此致,Mithun

oop class-design interface class

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

写作课 - 良好实践

第一件事是我真的不想在堆栈代码交换上发布这个,因为这是在大约5分钟内编写的少量代码.

我想问你我写的课(我在c ++中的第一篇)是否可以接受.我真的没有很多c ++代码,所以我无法将其与任何东西进行比较.

但我已经看到一些只实现函数声明的类,这些函数的内部编写在代码中的其他地方.

如果有什么东西是错的,我会问你任何建议.为什么他们按照我在上面的段落中描述的那样做?哪种编码风格更好?

class File {

private:

    FILE *_handler;
    char *_path;
    long _size;

    void setHandler(char *mode)
    {
        this->_handler = fopen(this->_path, mode);
    }

public:

    File(char *path)
    {
        this->_path = path;
    }

    size_t read()
    {
        this->setHandler("r");
        char *buffer = (char*) malloc(sizeof(char)*this->_size);

        return fread(buffer, 1, this->_size, this->_handler);
    }

    void write(char *data)
    {
        this->setHandler("w");
        fputs(data, this->_handler);
    }

    long size()
    {
        if(! sizeof(this->_size) > 0)
        {
            fseek(this->_handler, 0, SEEK_END);
            this->_size = ftell(this->_handler);
            rewind(this->_handler);
        }

        return this->_size;
    }

}; // End File
Run Code Online (Sandbox Code Playgroud)

c++ oop class-design class

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