小编man*_*ans的帖子

如何在Web服务中公开接口

我希望在我的WCF服务上有一个函数,其返回类型作为接口,但是当我从客户端调用它时,我收到一个System.Object,而不是实现服务发送的接口的类.

以下是一些示例代码:

[ServiceContract]
public interface IService
{
    [OperationContract]
    string SayHello();

    [OperationContract]
    IMyObject GetMyObject();
}

public interface IMyObject
{
    int Add(int i, int j);
}

[DataContract]
public class MyObject : IMyObject
{
    public int Add(int i, int j)
    {
        return i + j;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这项服务的实施中,我有:

public class LinqService : IService
{
    public string SayHello()
    {
        return "Hello";
    }

    public IMyObject GetMyObject()
    {
        return new MyObject();
    }
}
Run Code Online (Sandbox Code Playgroud)

SayHello()运作良好,但GetMyObject()返回一个System.Object.如何更改此代码以便GetMyObject()返回实现的对象IMyObject

编辑1 …

c# wcf interface

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

应用程序MainWindow在WPF中为空(使用Caliburn Micro)

我正在开发一个WPF应用程序,我需要指向控件内的主应用程序窗口.我正在使用Caliburn Micro.

Application.Current.MainWindownull

如何MainWindow在Caliburn Micro中获取应用程序的参考?

c# wpf caliburn.micro

7
推荐指数
2
解决办法
7000
查看次数

在哪里可以找到可以在 cmake 中使用的 boost 组件列表?

我有一个 cmake 文件,它增加了这样的提升:

if(ADD_BOOST)
#add boost library
  set(Boost_USE_STATIC_LIBS ON)
    set(Boost_USE_STATIC_RUNTIME ON)
  file(TO_CMAKE_PATH $ENV{BOOST_ROOT} BOOST_ROOT)
  if (MSVC)
    set(BOOST_LIBRARYDIR ${BOOST_ROOT}/lib64-msvc-12.0)
  else (MSVC)
    set(BOOST_LIBRARY_DIR $ENV{BOOST_ROOT})
  endif (MSVC)
  find_package(Boost COMPONENTS filesystem system program-options thread REQUIRED)
endif (ADD_BOOST)
Run Code Online (Sandbox Code Playgroud)

我有这条线:

 find_package(Boost COMPONENTS filesystem system program-options thread REQUIRED)
Run Code Online (Sandbox Code Playgroud)

我想使用 boost 中的程序选项 libabray。我应该在上面的列表中添加什么名字?

我在哪里可以找到我可以在上面提到的 cmake 行中使用的 boost 库列表?

c++ boost

7
推荐指数
2
解决办法
3581
查看次数

mvc视图中的动态类型

可能重复:
Razor中的动态匿名类型导致RuntimeBinderException

我试图在我的MVC应用程序中使用动态类型模型.我有以下代码:在控制器中:

var model = new { Name = "test name", Family = "m" };
return this.View(model);
Run Code Online (Sandbox Code Playgroud)

在我看来,我有:

@model dynamic

@if(Model!=null)
{
   <p> @Html.Raw(Model.Name) </p>
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我收到以下错误:

'object' does not contain a definition for 'Name'   (System.Exception {Microsoft.CSharp.RuntimeBinder.RuntimeBinderException)
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此错误?在调试期间,如果我将光标放在@Model上,我可以看到它有两个名为Name和Family的属性.

asp.net-mvc dynamic anonymous-types

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

使用C#在cmd中运行命令

我想运行一个cmd并在其中运行一些命令.我写了这段代码:

Process p = new Process();
ProcessStartInfo info =new ProcessStartInfo();

info.FileName = "cmd.exe";
info.WorkingDirectory = this.workingDirectory;
info.RedirectStandardInput = true;
info.UseShellExecute = false; 
info.CreateNoWindow = true;
p.StartInfo = info;

var x=p.Start();
using (StreamWriter sw = p.StandardInput)
{
    if (sw.BaseStream.CanWrite)
    {
        sw.WriteLine(@"set path=c:\temp"+ ";%path%");
        sw.WriteLine(@"@MyLongproces.exe");
    }
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用:

  1. 我无法看到命令窗口(即使我设置info.CreateNoWindowfalse).
  2. 我的命令没有运行.

问题是什么?我该如何解决?

  • UPDATE1

此代码不起作用:

  string binDirectory = Path.Combine(FileSystem.ApplicationDirectory, this.binFolderName);
  ProcessStartInfo info = new ProcessStartInfo("cmd", @"/c " + Path.Combine(binDirectory, command));
  info.RedirectStandardInput = false;
  info.RedirectStandardOutput = true;
  info.UseShellExecute = false;
  info.CreateNoWindow …
Run Code Online (Sandbox Code Playgroud)

c# command-line cmd

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

当我使用caliburn micro时,如何将wpf网格上的按钮绑定到MVVM上的方法

我在wpf窗口上有一个Grid,我想添加一个功能,用户可以通过单击删除按钮删除一些项目.该应用程序使用Calibrun Micro将视图绑定到ViewModel.

我的问题?

1-在WPF中使用按钮从网格中删除项目是一个好主意吗?

2-如何将按钮绑定到VM上的方法,并在methd中获取指向应删除的项目的指针?

EDIT1

我以这种方式将按钮添加到datagrid:

<DataGridTemplateColumn Width="100">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Content="Delete" cal:Message.Attach="DeleteFromList($dataContext)" />
         </DataTemplate>
     </DataGridTemplateColumn.CellTemplate>
 </DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

和c#代码如下:

 public void DeleteFromList(object tmp)
    {

    }
Run Code Online (Sandbox Code Playgroud)

但是datagrid上的按钮被禁用,单击它们不会触发DeleteFromList方法(我使用调试器检查).

为什么他们被禁用?如何启用它们?

c# wpf xaml mvvm caliburn.micro

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

我可以使用c ++中的模板类来完成此操作

我有一个类似于这个的类:

int add(int a,int b)
{
    return a+b;
}
int sub(int a,int b)
{
    return a-b;
}
class C
{
    int m_functionType;
    C(int functionType)
    {
        m_functionType=functionType;
    }
    int calc(int a, int b)
    {
         switch(m_functionType)
         {
            case 1:  // add
               return add(a,b);
               break;
            case 2: // subtract
                return sub(a,b);
          }
     }
};
Run Code Online (Sandbox Code Playgroud)

并使用如下:

main()
{ 
    C add(1);
    C sub(2);
    auto x=add.calc(1,2);
    auto z=sub.calc(2,1);
}
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但应该调用的函数在运行时被解析,我正在寻找一个解决方案来解决在编译时调用的函数.像这样的东西:

template <int func>
class C
{
   int calc(int a, int b)
    {
         switch(func)
         {
            case 1: …
Run Code Online (Sandbox Code Playgroud)

c++ templates

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

__attribute__((__packed__)); 和有什么区别 和#pragma pack(1)

我正在将在 Linux 上完美运行的代码移植到 Windows Visual C++。我在 Linux 中有这样的代码:

struct exif_desc
{
    uint16_t  tag;
    uint16_t  type;
    uint32_t  length;
    uint32_t  value;
}
__attribute__((__packed__));
Run Code Online (Sandbox Code Playgroud)

我在 Windows 上遇到错误:

'__packed__' : undeclared identifier 
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以通过使用来修复此错误

#pragma pack(1)
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别吗?Linux 和 Windows 中是否有可用于此属性的语法?

c++ linux windows pragma-pack

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

cmake 在 Windows 上找不到 openssl

我已经阅读了这篇文章,但它没有回答我的问题:(cmake 无法找到 openssl

我在 Windows 10 64 位中工作,我想使用带有 ssl 支持的 boost asio,因此我在 C:\Local\OpenSSL-Win64 中安装了 openssl,并且有一个指向此的环境变量。

我在 cmake 中有这段代码:

file(TO_CMAKE_PATH $ENV{OPENSSL_ROOT} OPENSSL_ROOT_DIR)
message(WARNING "root: ${OPENSSL_ROOT_DIR}")
find_package(OpenSSL )

message(WARNING "OpenSSL_VERSION: ${OPENSSL_VERSION}")
message(WARNING "OpenSSL_INCLUDE_DIR: ${OPENSSL_INCLUDE_DIR}")
message(WARNING "OpenSSL_LIBRARIES: ${OPENSSL_LIBRARIES}")
Run Code Online (Sandbox Code Playgroud)

当我运行 cmake 时,我收到以下消息:

CMake Warning at CMakeLists.txt:44 (message):
  root: C:/Local/OpenSSL-Win64


CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/FindOpenSSL.cmake:293 (list):
  list GET given empty list
Call Stack (most recent call first):
  CMakeLists.txt:45 (find_package)


CMake Error at C:/Program Files (x86)/CMake/share/cmake-3.1/Modules/FindOpenSSL.cmake:294 (list):
  list GET given empty list
Call …
Run Code Online (Sandbox Code Playgroud)

c++ boost openssl cmake

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

opencv 4.x API与先前版本有何不同?

我注意到opencv 4已发布,一个区别是API更改为与c ++ 11兼容。

这到底是什么意思?

如何更改我的代码以与此版本兼容?

c++ opencv c++11

6
推荐指数
2
解决办法
5618
查看次数