问题列表 - 第35795页

如何在List中存储代理

如何将委托(命名,匿名,lambda)存储在通用列表中?基本上我正在尝试构建一个委托字典,从中我可以使用密钥访问存储的委托并执行它并按需返回值.是否可以在C#4中完成?有什么想法来实现它吗?注意:异类列表更适合存储任何类型的委托.

.net c# generics lambda delegates

13
推荐指数
2
解决办法
2万
查看次数

如何通过innerText获取元素

如果我知道文本标签包含什么,如何在html页面中获取标签.例如:

<a ...>SearchingText</a>
Run Code Online (Sandbox Code Playgroud)

javascript jquery innertext

114
推荐指数
12
解决办法
14万
查看次数

私下符合协议

有没有办法隐藏最终用户的协议?我会试着详细描述我想要的东西.我有类我们称之为EndUserClass,它符合一些协议,比方说HiddenClassDelegate和我希望隐藏的最终用户协议.代码如下所示:

@interface EndUserClass : NSObject  <HiddenClassDelegate>
{
  // .....
}   

@end
Run Code Online (Sandbox Code Playgroud)

我希望使用以下声明保持相同的功能:

@interface EndUserClass : NSObject  
{
  // .....
}   

@end
Run Code Online (Sandbox Code Playgroud)

有没有办法私下遵守协议?我知道我可以在类声明中跳过委托,但它给出了我不想要的编译器警告

cocoa-touch objective-c

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

从ASP.NET MVC Lambda Expression获取价值

我正在尝试创建自己的HTML Helper,它接受一个表达式(类似于内置的LabelFor <>帮助器.我已经找到了在表达式类似于此时获取属性值的示例:

model => model.Forename
Run Code Online (Sandbox Code Playgroud)

但是,在我的一些模型中,我想获取子元素中的属性,例如

model => mode.Person.Forename
Run Code Online (Sandbox Code Playgroud)

在这些例子中,无论如何我都找不到(轻松)获取Forename的值.任何人都可以建议我应该如何获得这个价值.

谢谢

html c# asp.net-mvc lambda html-helper

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

为什么setter在接口上不好?

如果我们谈论域对象,为什么setter在接口上是坏的?

澄清:

我有一个存储在db中的域对象.它有几个领域,设置成本很高.即

class JurasicPark {

  private long area;

  ...other fields ...

  getters and setters

  ....

  private Collection<Dinosaur> dinosaurs;
  private Collection<ExoticTree> flora;

  public Collection<Dinosaur> getDinosaurus(){
      ...
  }

  public Collection<ExoticTree> getFlora(){
      ...
  }


}
Run Code Online (Sandbox Code Playgroud)

字段dinosaurs并且flora初始化和设置成本非常高.但在许多情况下,我不需要每次都设置这个字段.

问题是,如果我返回到JurasicPark类的用户实例,dinosaurs或者flora没有初始化它,那么填充导致NPE或我自己投掷的一些预期.我不想让api用户考虑这个并记住哪些字段可能没有设置.

因此,为了解决这个问题,我考虑创建两个接口IJurasicPark,IFullJurasicPark第一个将所有访问方法声明为简单字段,前者将声明访问方法floradinosaurs字段.

   interface IFullJurasicPark extends IJurasicPark

    class IJurasicPark implements IFullJurasicPark
Run Code Online (Sandbox Code Playgroud)

在这种方法中IJurasicPark接口将包含getter和setter,所以我实际上问这个设计是不是很糟糕?

我也不想在使用LazyInit异常的hibernate风格中实现它.

oop interface

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

如何避免cmd.exe解释shell特殊字符,如<> ^

我有一个Windows CMD脚本,它接受许多参数并执行EXE,首先传递一些硬编码参数,然后传递用户的所有参数.CMD脚本如下所示:

launcher.exe paramX paramY %*
Run Code Online (Sandbox Code Playgroud)

用户将从Windows shell执行CMD脚本,如下所示:

launcher.cmd param1 param2 param3 [...]
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果参数到CMD脚本包含壳等特殊字符< >^,用户被迫通过前述各用3插入符号逸出这些^壳转义字符.

两个例子

1)要将参数传递ten>one给EXE,用户必须按如下方式启动CMD:

launcher.cmd ten^^^>one
Run Code Online (Sandbox Code Playgroud)

这样做的原因是,shell特殊字符^,并>通过命令外壳在两个层面解释,首先在命令行和第二的CMD脚本中.因此,使用脱字符^外壳转义字符转义的shell必须应用两次.问题是这对用户来说并不明显,看起来很难看.

对于这个例子,一个更好的解决方案是用双引号括起参数.但是,这会分解为更复杂的示例,其中包含参数中的文字双引号.

2)要将参数传递"^给EXE,用户必须按如下方式启动CMD:

launcher.cmd "\"^^^^"
Run Code Online (Sandbox Code Playgroud)

在我的情况下,我想支持包含任何低ASCII字符序列的参数,不包括控制字符,即代码点0x20到0x7E.我知道会有一些例子,用户必须使用插入符号来逃避某些shell特殊字符.但是,我希望用户在这些情况下每次都必须使用3个插入符,因为它们恰好是在调用CMD脚本而不是EXE.

我可以通过使用执行相同操作的EXE替换CMD脚本来解决此问题.但是,有没有办法改变CMD脚本,以便它将参数传递给EXE而不解释shell特殊字符?

cmd escaping batch-file caret

12
推荐指数
2
解决办法
2万
查看次数

VB转C#重写问题

我在VB中有以下方法声明,需要将其转换为C#:

<DllImport("winspool.Drv", EntryPoint:="OpenPrinterW", _
   SetLastError:=True, CharSet:=CharSet.Unicode, _
   ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function OpenPrinter(ByVal src As String, ByRef hPrinter As IntPtr, ByVal pd As Int16) As Boolean
End Function
Run Code Online (Sandbox Code Playgroud)

特别是我不确定ByRef参数说明符是否等同于refC#.
我也不知道Shared == static是否必须如此extern.可能很多人都精通VB和C#,所以我很感激在C#中提供正确的声明.

.net c# vb.net translation

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

如何使用Perl的Archive :: Zip从ZIP存档中提取单个文件?

我有一个zip文件X,我想提取一个文件,位于x/x/x/file.txt.我如何使用Archive::Zip和Perl 这样做?

perl zip

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

如何在RavenDB中选择所有类型的文档

到目前为止,我尝试过以下方法:

public class Widget
{
    public int Id;
    public string Name;
}

public static class Main
{
    public static void Main()
    {
        // Initialize store and preload with widgets...

        using (var session = store.OpenSession())
        {
            var widgets = session.Load<Widget>();
            foreach(var widget in widgets)
            {
                Console.WriteLine(widget.Name);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经能够通过添加索引然后使用该索引作为查询来加载所有:

var store = new DocumentStore();
store.DatabaseCommands.PutIndex("AllWidgets", new IndexDefinition<Widget>
{
    Map = widget => from widget in widgets
                   select new { widget }
});

// Back in Main
var widgets = …
Run Code Online (Sandbox Code Playgroud)

c# ravendb

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

是否可以从一个基类到另一个基类进行dynamic_cast?

例如,我有这样的代码

class Base1
{
  virtual void wonderFULL() = 0;
};

class Base2
{
  // all this weird members
};

class Derived : public Base1, public Base2
{
  // not so weird members
};

int main()
{
  Derived Wonder;
  magicFunction(&Wonder);
  return 0;
}

void magicFunction(Base2 *ptr)
{
  if (Base1 *b1 = dynamic_cast<Base1 *>(ptr))
    b1->wonderFULL();
}
Run Code Online (Sandbox Code Playgroud)

但是,由于不可能将ptr转换为b1,所以neverFULL永远不会被执行.是否有可能进行这样的转换?

c++ inheritance dynamic-cast class

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