小编Con*_*tin的帖子

有没有办法将通用列表转换为接口/基类类型列表?

我试图在他们创建的疯狂情况下向某人展示接口的用途.它们在列表中有几个不相关的对象,需要对每个对象中的两个字符串属性执行操作.我指出,如果他们将属性定义为接口的一部分,他们可以使用接口对象作为作用于它的方法参数的类型; 例如:

void PrintProperties(IEnumerable<ISpecialProperties> list)
{
    foreach (var item in list)
    {
        Console.WriteLine("{0} {1}", item.Prop1, item.Prop2);
    }
}
Run Code Online (Sandbox Code Playgroud)

这似乎一切都很好,但是需要处理的列表不是(也不应该)使用接口作为类型参数声明.但是,您似乎无法转换为其他类型参数.例如,这失败了,我无法理解为什么:

using System;
using System.Collections.Generic;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Test> myList = new List<Test>();
            for (int i = 0; i < 5; i++)
            {
                myList.Add(new Test());
            }

            PrintList((IEnumerable<IDoSomething>)myList);
        }

        static void PrintList(IEnumerable<IDoSomething> list)
        {
            foreach (IDoSomething item in list)
            {
                item.DoSomething();
            }
        }
    }

    interface IDoSomething
    {
        void DoSomething();
    }

    public class Test : IDoSomething …
Run Code Online (Sandbox Code Playgroud)

.net generics covariance

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

svn工作副本的快速递归grepping

我需要在svn工作副本中搜索"foo"中的所有cpp/h文件,完全排除svn的特殊文件夹.GNU grep 的确切命令是什么?

svn windows bash grep

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

如果私有变量已经存在,我应该将其标记为私有变量?

据我所知,在C#中,如果没有另外标记,所有字段都是默认的私有字段.

class Foo
{
  private string bar;
}

class Foo
{
  string bar;
}
Run Code Online (Sandbox Code Playgroud)

我猜这两个声明是平等的.

所以我的问题是:我应该将私有变量标记为私有变量private

.net c# default declaration

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

继承需要存储子类特定数据的数组的最佳方法是什么?

我正在尝试设置类似于以下内容的继承层次结构:

abstract class Vehicle
{
  public string Name;
  public List<Axle> Axles;
}

class Motorcycle : Vehicle
{
}

class Car : Vehicle
{
}

abstract class Axle
{
  public int Length;
  public void Turn(int numTurns) { ... }
}

class MotorcycleAxle : Axle
{
  public bool WheelAttached;
}

class CarAxle : Axle
{
  public bool LeftWheelAttached;
  public bool RightWheelAttached;
}
Run Code Online (Sandbox Code Playgroud)

我想只在Motorcycle对象的Axles数组中存储MotorcycleAxle对象,在Car对象的Axles数组中存储CarAxle对象.问题是没有办法覆盖子类中的数组来强制一个或另一个.理想情况下,以下内容对摩托车类有效:

class Motorcycle : Vehicle
{
  public override List<MotorcycleAxle> Axles;
}
Run Code Online (Sandbox Code Playgroud)

但是当覆盖时类型必须匹配.我该如何支持这种架构?在Axles成员访问的任何地方,我是否只需要进行大量的运行时类型检查和转换?我不喜欢添加运行时类型检查,因为你开始失去强类型和多态的好处.在这种情况下必须至少进行一些运行时检查,因为WheelAttached和Left/RightWheelAttached属性取决于类型,但我想最小化它们.

c# oop inheritance covariance contravariance

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

当然谷歌Appengine规模,但它也快吗?

我想知道响应时间是否良好,而不仅仅是它的扩展.有经验的人吗?

google-app-engine

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

为什么在调用.getBytes()时字符串"¿"会被翻译为"¿"

使用时将字符串"¿"写出来

System.out.println(new String("¿".getBytes("UTF-8")));
Run Code Online (Sandbox Code Playgroud)

¿写的而不仅仅是¿

为什么?我们如何解决它?

java utf-8 character-encoding

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

即使使用UTF-8,为什么在Windows与Linux中显示不同?

为什么以下在Linux与Windows中显示不同?

System.out.println(new String("¿".getBytes("UTF-8"), "UTF-8"));
Run Code Online (Sandbox Code Playgroud)

在Windows中:

¿

在Linux中:

一个

java utf-8 character-encoding

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

具有自定义选择字段的Django模型查询

我正在使用称为django-granular-permissions(http://code.google.com/p/django-granular-permissions/)的行级权限模型.权限模型只有两个字段,即content-type和object id.

我使用了以下查询:

 User.objects.filter(Q(row_permission_set__name='staff') | \
     Q(row_permission_set__name='student'), \
     row_permission_set__object_id=labsite.id)
Run Code Online (Sandbox Code Playgroud)

我想在结果集中添加is_staffis_student布尔字段,而不是每次获取结果时都要查询.

Django文档显示了查询集的extra()方法,但我无法弄清楚我应该用这种关系为纯SQL选择查询编写什么.

这该怎么做?

python django django-models

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

ImportError:模型A引用模型B,模型B引用模型A.

我认为这比Django更像是一个蟒蛇问题.

但基本上我在模特A做:

from myproject.modelb.models import ModelB
Run Code Online (Sandbox Code Playgroud)

在模型B:

from myproject.modela.models import ModelA
Run Code Online (Sandbox Code Playgroud)

结果:

无法导入名称ModelA

我做了一些禁止的事吗?谢谢

python django circular-dependency

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

Google App Engine,JDO,在过滤器中使用Date

在我的应用程序中,我想从数据存储区中获取一组实体,其中Date字段设置为当前时刻之前的日期.

我确实意识到,这样做的一种方法是简单地将日期存储在这些实体中,只是long以毫秒为单位的值.

但实际上有一种方法可以将它们存储为Dates并能够使用它们进行过滤吗?

我试过类似的东西 query.setFilter("dateField.before(dateParam)"); ,但它没有用,简单的比较也没有.

提前致谢.

java google-app-engine filter java.util.date google-cloud-datastore

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