标签: extend

初学者:用C#扩展一个类,我做错了吗?

再次免责声明仍然在学习C#和OOP一般,所以我希望你能耐心陪我:)

我目前正在使用一个CMS,它有一个叫做类的类FileVersion,它基本上包含一个与文件有关的属性列表,如文件名,文件类型,字节大小,id,上传日期,is-latest-version等.

FileVersions 的列表包含在File其中具有自己的唯一ID的列表中.如果要从CMS下载特定文件,则使用以下内容构建URL:

string URL = "/files/"+file.id.toString()+"/"+file.fileVersion.Last().filename;
Run Code Online (Sandbox Code Playgroud)

现在,对于我正在处理的特定控件(专门处理文档文件),能够将URL与所有其他FileVersion信息一起存储以供以后使用是有意义的.所以我决定创建自己的类DocumentVersion,其中包含扩展FileVersion.这就是它的样子:

public partial class DocumentVersion : FileVersion
{
    public DocumentVersion() : base() { }
    public string link;
}
Run Code Online (Sandbox Code Playgroud)

现在我应该注意,似乎我不需要在这里实现一个接口 - 但是不要把它作为福音,这就是为什么我在这里.

但是,当我试图像我这样投下我FileVersionDocumentVersion时候:

DocumentVersion dv = ((DocumentVersion)fileversion);
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

无法将"Foo.CMS.FileVersion"类型的对象强制转换为"CoA.DocumentVersion".

我的想法是因为我试图在一个不同的命名空间中扩展一个类,而不是原来所在的,但就像我说的那样,OOP对我来说相对较新,所以我可能错了.

在此先感谢您的帮助.这个社区非常有价值!我只希望一旦我更熟练,我可以回馈:).

c# casting class extend

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

需要有关扩展我的Perl模块的帮助

我试图扩展我的公司特定的BaseClass(Acme :: BaseClass),但每当我:

package Manager;
use strict;
use warnings;
use base qw(Acme::BaseClass)
sub new { ...
Run Code Online (Sandbox Code Playgroud)

它给了我错误:

Base class package "Acme::BaseClass" is empty.
Run Code Online (Sandbox Code Playgroud)

但在我的脚本中,我可以使用该包:

use Acme::BaseClass;
my $bc = BaseClass->new("myname");
$bc->prnt(); # prints "myname"
exit;
Run Code Online (Sandbox Code Playgroud)

这是我第一次尝试在Perl中继承,所以也许我错过了一些基本的东西?

笔记:

  • 我尝试过使用"父",但它也不起作用
  • 我试着用旧学校:

    BEGIN {require Acme :: BaseClass; 推@ISA,qw(Acme :: BaseClass); }

我不确定如何正确地做这些.希望这是我想念的简单事情.如果没人能回答,我会添加更多细节.

perl perl-module extend

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

扩展PHP Smarty Singleton类

我不确定如何提出这个问题.基本上我试图让我的视图对象从Smarty对象扩展出来.然后,我希望能够将视图对象扩展到我的控制器对象.

View对象将为我的所有控制器分配我想要的模板变量.

我知道我现在有什么问题,但如果有人能指出我正确的方向,那将是非常棒的.我尽力说出最好的话.

<?php

defined('SITE_ROOT') ? null : define('SITE_ROOT', $_SERVER['DOCUMENT_ROOT'].'/mvcsandbox');

require_once('Smarty/Smarty.class.php');

class View extends Smarty {

    public static $instance=NULL;

    public static function getInstance(){

        if ( self::$instance === null ){
            self::$instance = new self();
        }
        return self::$instance;
    }

    public function __construct() {

        $this->template_dir = SITE_ROOT.'/Library/tmp/';
        $this->compile_dir  = SITE_ROOT.'/Library/tmp/';
        $this->config_dir   = SITE_ROOT.'/Library/tmp/';
        $this->cache_dir    = SITE_ROOT.'/Library/tmp/';

        $this->assign("var1", "This is from the view class");

    }

    public static function output() {

        self::display('test.tpl');

    }

}

class Controller1 extends View {

    public function init() {
        $this->assign("var2", "This …
Run Code Online (Sandbox Code Playgroud)

php class smarty extend

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

扩展Dict类的正确方法是什么?

我想用一组预定义的有效键来实现两个不同的词典.另外,一个字典包含另一个字典.

class Otherdict (dict):

    _keys = ['A','B']

    def __init__(self):
        for key in self._keys:
            self[key] = None

    def populateDict(self):
        self['B'] = 10
        self['A'] = 12

class MyDict(dict):

    _keys = ['R','ED']

    def __init__(self):
        for key in self._keys:
            self[key] = None

    def __getitem__(self, key):
        if key not in self._keys:
            raise Exception("'" + key + "'" + " is not a valid key")
        dict.__getitem__(self,key)

    def __setitem__(self, key, value):
        if key not in self._keys:
            raise Exception("'" + key + "'" + " is not a …
Run Code Online (Sandbox Code Playgroud)

python dictionary extend

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

在扩展泛型类的类中启动实例变量

我有一个泛型类"SimpleList"(摘录):

public abstract class SimpleList<T> {

   protected List<T> list;

   public SimpleList(List<T> list) {
      this.list = list;
   }
}
Run Code Online (Sandbox Code Playgroud)

另一个扩展它的类"TrackList"(摘录):

public class TrackList extends SimpleList {

    public TrackList(List<XmlTrack> list) {
        super(list);
    }
}
Run Code Online (Sandbox Code Playgroud)

在"TrackList"中,我指定该列表用于保存"XmlTrack"类型的对象.但是,似乎无法从该列表中获取对象并访问其方法.例如,这不起作用:

list.get(0).someMethodSpecificToXmlTrack()

我不明白为什么这不起作用?"SimpleList"中的列表是否设置为仅保存"XmlTrack"?

java generics list extend

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

如何让MY_Controller中的__construct()运行?

可能重复:
Codeigniter扩展扩展的MY_Controller

我一直在摆弄这个问题已经有一段时间了,我正处于挫折之中.我正在使用MY_Controller扩展控制器类.

以下是详细信息:

  • __construct() 似乎没有被称为.
  • 该文件应该位于应用程序/核心中
  • 该文件名为MY_Controller.php
  • 我已经MY_设置为扩展的前缀(我有其他扩展工作正常)

这是我的代码:

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class MY_Controller extends CI_Controller {

    function __construct()
    {
        parent::__construct();
        echo 'TESTING!!!'; // This should print, followed by an ob_start() error
    }

}
Run Code Online (Sandbox Code Playgroud)

我应该得到一个页面,TESTING!!!后面跟着一个ob_start()错误,但是页面正常渲染.

我试过拆分构造函数类并只调用MY_Controller中的私有函数,但这不起作用.我知道正在调用该文件,因为如果我故意在MY_Controller.php中创建一个php错误,该页面将会出错.在我看来,它__construct()只是没有运行.

php constructor codeigniter extend

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

从JFrame扩展

延伸到JFrame和有区别javax.swing.JFrame吗?

例:

public class Authenticator extends JFrame {
Run Code Online (Sandbox Code Playgroud)

和...

public class Authenticator extends javax.swing.JFrame {
Run Code Online (Sandbox Code Playgroud)

java swing jframe extend

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

使用Dart语言扩展基本List类和额外功能

这个问题是关于Dart语言的.我想要一个只是List但具有一些额外功能的类.

例如,我有一个名为Model的类:

class Model{
  String name;
  int type;
  Model(this.name, this.type);
}
Run Code Online (Sandbox Code Playgroud)

我知道Model的类型只能取四个值:从0到3.我希望有一个方法,它可以给我一个指定类型的模型列表,例如List<Model> modelCollection.getByType(int type);.我打算在该类中有四个"隐藏"模型列表(按类型分组).因此,我需要覆盖List元素的添加和删除,以使隐藏列表保持最新.

我怎样才能尽可能简单地实现这一点?

PS我知道这很简单,但我对Object继承不太熟悉并且找不到合适的例子.PPS我也检查了这个,但不知道它是否过时,并没有抓住这个想法.

inheritance class extend dart

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

Java使用n个值列表扩展arraylist

在python中,我可以执行以下操作:

n = 8  
a = []  
a += [1]*n
Run Code Online (Sandbox Code Playgroud)

如何在java中使用ArrayLists执行等效操作(不使用for循环..)?

List<T> list = new ArrayList<T>();
list.add(1);
list.add(2);
list.add(3);
// Some construct that is equivalent to a += [1]*n
Run Code Online (Sandbox Code Playgroud)

python java list arraylist extend

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

添加属性到接口

我有一个接口(来自另一个我无法直接修改的框架),如下所示:

public interface IUserDemo
{
string UserName { get; }
}
Run Code Online (Sandbox Code Playgroud)

我想'扩展'这个界面,所以它看起来如下:

public interface IUserDemo
{
string UserName { get; }
string Password { get; }
}
Run Code Online (Sandbox Code Playgroud)

希望解决方案允许我执行以下操作:

  UserDemo demouser = new UserDemo();
  return new UserDemo
   {            
      UserName = userName,
      Password = password
   };
Run Code Online (Sandbox Code Playgroud)

UserDemo的外观如下:

public class UserDemo : IUserDemo
{
    public string UserName { get; set; }
    public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果有人能够朝着正确的方向推动我,这将是伟大的!

.net c# interface extend

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