小编Ric*_*ver的帖子

List<T> to IEnumerable<T> 接口问题

namespace WpfApplication3
{
public class Hex
{
    public String terr;
}    

public class HexC : Hex
{
    int Cfield;
}

public interface IHexGrid
{
    IEnumerable<Hex> hexs { get; }
}

public class hexGrid : IHexGrid //error CS0738: 'WpfApplication3.hexGrid' does not               
{
    public List<Hex> hexs { get; set; }
}

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        List<HexC> hexList1 = new List<HexC>();
        genmethod(hexList1); //but this compiles fine          
    }

    void genmethod(IEnumerable<Hex> hexList)
    {
        string str1;
        foreach (Hex hex …
Run Code Online (Sandbox Code Playgroud)

c#

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

在C#中创建代理对象

我希望在c#中使用代理对象.我可能会通过Windows Communication Foundation实现网络连接.到目前为止,我刚刚制作了一个非常基本的WCF服务,该服务适用于同一台计算机上的不同进程.我希望客户端类能够在同一进程上使用真实对象,并使用代理对象通过Internet访问真实对象.现在我可以为所有方法手动创建一个接口,我想在互联网上使用,手动创建一个代理类,调用每个方法的服务,并在服务主机和服务客户​​端上手动创建每个服务.

但是,我可以通过任何方式获得WCF或任何软件来自动创建接口和代理类吗?

c# wcf proxy

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

C#交叉引用泛型类

我希望两个泛型类能够互相引用.我似乎无法编译任何东西.试过这个:

class Program
{
    static void Main(string[] args)
    {
    }

    public class ClassA<BT> where BT: ClassB<ClassA<BT>>
    {
        BT btvar;
    }

    public class ClassB<AT> where AT: ClassA<ClassB<AT>>
    {
        AT atvar;
    }
}
Run Code Online (Sandbox Code Playgroud)

这有一个实际的实现,但我想避免对我自己的代码进行复杂的解释.我可以创建遵循规则的封闭类,我似乎无法描述那些封闭实例的泛型类或接口.

c# generics

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

Scala类,对象,案例类,文字

试图了解Scala的基本概念.因此,每次使用关键字"new"实例化Class时,我们都会获得一个新对象.使用object关键字声明的单个对象无法使用关键字"new"进行实例化,因为只能有一个.从某种意义上说,它是在编译时实例化的.

Int是一个案例类吗?5.07是Double的案例类吗?

4是一个对象吗?

类本身有时候,还是总是对象?

功能是对象.他们也是课程的实例?这如何组合在一起?

Scala是纯粹的面向对象的Smalltalk还是它在OO前端做出了一些妥协?

oop scala smalltalk

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

Scala:常数val或def

我已经为Hex网格获得了一个整数坐标结构,将其从C#移植到Scala如下:

object Cood
{
  def Up = new Cood(0, 2)
  def UpRight = new Cood(1, 1)
  def DownRight = new Cood(1,- 1)
  def Down = new Cood(0, - 2)
  def DownLeft = new Cood(- 1, - 1)
  def UpLeft = new Cood(- 1, + 1)
  def None = new Cood(0, 0)
}

class Cood(val x: Int, val y: Int)
{
   //more code
}
Run Code Online (Sandbox Code Playgroud)

由于非基本类型没有常量,因此它们是静态的get属性。我应该在Scala中将它们实现为def或val,还是没关系?

scala constants

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

Scala:蛋糕模式的懒惰烘焙和运行时编译

蛋糕图案的一个很大的局限是它的静电.我希望能够完全独立地混合使用由不同编码器编写的特征.然而性状会不会需要混合式频繁.在运行主应用程序之前,用户将有一个初始化屏幕,用于选择特征/组件.所以我想到了为什么不在用户选择选择模块中混合和编译所选择的特征.如果编译失败,用户只会收到一些消息 - 不兼容的程序集或者什么都没有问题.如果编译成功,那么顶级UI模块将使用程序集的预编译部分加载新编译的类并运行主应用程序.注意,在运行时初始化期间可能只需要编译一个或两个类.所有其余的代码都可以正常编译.

我对Scala很新.这是一种公认​​的模式吗?有没有支持呢?在相对简单的依赖情况下使用Guice似乎很疯狂.我可以在应用程序中轻松运行Scala编译器吗?我可以在内存中运行它,它的输出可以从内存中使用而不需要创建不必要的文件吗

注意:虽然看似动态,但这种方法仍然是100%静态的.

编辑它发生在微软的Roslyn项目的一个驱动器是为C#和Visual Basic启用这种事情.但即使对于高性能的微软团队来说,这似乎也是一个相当大的项目.

compiler-construction scala dynamic cake-pattern

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

Scala:递归隐式类型

我有以下用于解析的特性,它们为对象的开头和结尾提供文件位置:

case class FilePosn(lineNum :Int, tabs: Int, spaces: Int, fileName: String)
{/*code omitted*/}

trait PosnEnds
{
  def startPosn: FilePosn
  def endPosn: FilePosn
  def multiLine: Boolean = startPosn.lineNum != endPosn.lineNum
  def OneLine: Boolean = startPosn.lineNum == endPosn.lineNum
  def indent: Int = startPosn.tabs
  def startLine: Int = startPosn.lineNum
  def endLine: Int = endPosn.lineNum
}

object FilePosnVoid extends FilePosn(0, 0, 0, "There is no File position")
{ override def posnString(indentSize: Int): String = "No File Posn: " }
Run Code Online (Sandbox Code Playgroud)

在伴侣对象中我创建了一个隐含的,因此PosnEnds序列本身就是隐含的PosnEnds:

object PosnEnds
{
  implicit …
Run Code Online (Sandbox Code Playgroud)

scala scala-implicits

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

应用或操作选项结果

我有以下代码:

class CSplit(var s1: CanvNode, var s2: CanvNode) extends SplitPane
{         
   topComponent =  s1.merge
   bottomComponent = s2.merge
   def containsV(orig: MapCanvT): Option[MapCanvT]  = 
   {
      def containsIn(cn: CanvNode): Option[MapCanvT] = cn match
      {  
        case Left => None 
        case Right(mc) => if (mc == orig) Some(mc) else None                 
      }
      containsIn(s1) match
      {
        case Some(mc) => Some(mc)
        case None => containsIn(s2)
      }
    }
 }
Run Code Online (Sandbox Code Playgroud)

我想减少containsV方法的代码.我的第一个想法是使用fold方法来缩短containsIn方法.但Option没有一个,也没有扩展Class Either.Option [T]不应该扩展[T,None]吗?然后至少有一个可以使用Either的折叠方法.

我最后的想法是将s1和s2视为一个List并找到它但我无法编译:

def containsV(orig: MapCanvT):
  Option[MapCanvT] = ::[CanvNode](s1, s2).find(_ == Right(orig))      
Run Code Online (Sandbox Code Playgroud)

scala scala-option

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