小编Tim*_*hyP的帖子

Activator.CreateInstance找不到构造函数(MissingMethodException)

我有一个具有以下构造函数的类

public DelayCompositeDesigner(DelayComposite CompositeObject)
{
    InitializeComponent();

    compositeObject = CompositeObject;  
}
Run Code Online (Sandbox Code Playgroud)

以及没有参数的默认构造函数.

接下来我正在尝试创建一个实例,但它只能在没有参数的情况下工作:

var designer = Activator.CreateInstance(designerAttribute.Designer);
Run Code Online (Sandbox Code Playgroud)

这工作正常,但如果我想传递参数,它不会:

var designer = Activator.CreateInstance(designerAttribute.Designer, new DelayComposite(4));
Run Code Online (Sandbox Code Playgroud)

这导致MissingMethodException:

未找到构造函数类型Vialis.LightLink.Controller.Scenarios.Composites.DelayCompositeDesigner

这里有什么想法?


问题是我真的需要在施工期间传递一个物体.

你看我有一个设计器,它加载了从中继承的所有类型CompositeBase.然后将这些添加到列表中,用户可以从中将它们拖动到设计器.执行此操作后,将拖动的实例添加到设计器中.这些类中的每一个都定义了自定义属性:

[CompositeMetaData("Delay","Sets the delay between commands",1)]
[CompositeDesigner(typeof(DelayCompositeDesigner))]
public class DelayComposite : CompositeBase
{
}
Run Code Online (Sandbox Code Playgroud)

当用户选择设计器中的项目时,它会查看这些属性以便为该类型加载设计器.例如,在它的情​​况下,DelayComposite它将加载具有标签和滑块的用户控件,该标签和滑块允许用户设置DelayComposite实例的"延迟"属性.

到目前为止,如果我没有将任何参数传递给构造函数,这可以正常工作.设计者创建一个实例DelayCompositeDesigner并将其分配给WPF的content属性ContentPresenter.

但由于该设计人员需要在设计器中修改所选属性,因此DelayComposite 我必须将此实例传递给它.这就是为什么构造函数看起来像这样:

public DelayCompositeDesigner(DelayComposite CompositeObject)
{
    InitializeComponent();

    compositeObject = CompositeObject;
}
Run Code Online (Sandbox Code Playgroud)

欢迎提出建议


@VolkerK

您的代码的结果是这样的:

<---- foo Vialis.LightLink.Controller.Scenarios.Composites.DelayCompositeDesignerVoid .ctor()Vialis.LightLink.Controller.Scenarios.Composites.DelayCompositeDesignerVoid .ctor(Vialis.LightLink.Controller.Scenarios.Composites.DelayComposite)param:Vialis .LightLink.Controller.Scenarios.Composites.DelayComposite foo ---->


Leppie,你是对的,我出于某种原因在我的UI应用程序中引用了Composites程序集......这不是我在运行时加载它时应该做的事情.以下代码有效:

object …
Run Code Online (Sandbox Code Playgroud)

.net c# activator missingmethodexception

18
推荐指数
3
解决办法
4万
查看次数

是否存在Google协议缓冲区的良好C实现

Google官方提供了Google协议缓冲区的C++实现,但我正在寻找C实现.

我不会自己使用它,但我希望我可以使用这个工具为我们的Google协议缓冲区定义生成C代码,然后我可以将它交给C开发人员.

我不是在寻找任何RPC功能,只是编码和解码Google Protocol Buffer消息.

c protocol-buffers

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

清除SingleChoice ListView选择

有没有办法清除ListView中的选定项?

ListView的定义如下:

<ListView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:minHeight="50dp"
    android:id="@+id/example_list"
    android:layout_weight="2"
    android:choiceMode="singleChoice"/>
Run Code Online (Sandbox Code Playgroud)

并使用自定义适配器填充.

使用选择器突出显示所选项目:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true" >
    <shape>
      <gradient
       android:startColor="#3E5260"
         android:endColor="#3E5260"
         android:angle="270" />
    </shape>
  </item>
  <item android:state_activated="true">
    <shape>
      <gradient
       android:startColor="#3E5260"
         android:endColor="#3E5260"
         android:angle="270" />
    </shape>
  </item>
</selector>
Run Code Online (Sandbox Code Playgroud)

现在我真正拥有的是单个活动中的2个ListViews,当
在一个ListView中选择一个项目时,我想取消选择另一个ListView中的项目.

单击一个项时,两个ListView都会引发以下处理程序:

void DeviceList_Click(object sender, EventArgs e)
{
    //easy enough to check which ListView raised the event
    //but then I need to deselect the selected item in the other listview
}
Run Code Online (Sandbox Code Playgroud)

我尝试过这样的事情:

exampleList.SetItemChecked(exampleList.SelectedItemPosition, false);
Run Code Online (Sandbox Code Playgroud)

exampleList.SetSelection(-1);
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.

android android-layout xamarin.android

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

TcpListener:监听每个地址,包括GPRS IP地址

我们有一个简单的遗留软件,我们需要通过端口15001使用TCP/IP进行通信.我们需要在端口15001上侦听遗留软件以建立连接,然后读取它发送给我们的任何内容.

我们已经在互联网上测试了这个解决方案,它运行得很好.但是,如果我们通过GPRS TCP/IP网络测试相同的解决方案,则不会.

已经检查了所有基础知识,我们可以ping通GPRS网络中的其他设备,并且端口15001不会被任何防火墙阻止.

那么我的TcpListener可能有问题吗?

它初始化如下:

tcpServer = new TcpListener(IPAddress.Any, TCP_PORT);
Run Code Online (Sandbox Code Playgroud)

我假设它监听系统上每个可用的IPv4接口,因为我使用了IPAddress.Any?

有没有人知道这两个网络之间的区别是什么?(即使应该没有任何区别)并且如果有什么我需要更改为我的TcpListener?

.net c# networking tcp tcplistener

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

从PreferenceScreen启动活动

我有一个字符串列表(存储在数据库中,而不是作为资源),
我想允许用户编辑此列表.这很容易做到正常 Activity,
但在这个应用程序中,列表应该是一部分user preferences.
基本上它是用户想要使用的句子列表.

由于我想提供一致的UI,我想将其添加到首选项屏幕:

<PreferenceScreen xmlns:android="...">
    <!-- Some other categories and preferences here -->
    <PreferenceScreen android:key="PREF_PDT"
                      android:title="Predefined Texts"
                      android:summary="View and edit the list of predefined texts">
    </PreferenceScreen>
    <!-- Some other categories and preferences here -->
<PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

现在让我说我有一个完整的工作Activity,允许我编辑数据库中的文本,
我该怎么做,以便当用户点击'PREF_PDT'项目时Activity使用?

我接受它我将不得不对其进行一些修改Activity
或创建某种自定义的偏好视图?

更新:所以为了清楚,我不需要"列表"屏幕来挂钩设置,
我只需要给用户一个印象,他们仍然在应用程序的首选项部分(不破坏导航堆栈的课程).否则,他们必须到一个地方编辑一些设置并转到另一个地方编辑文本.他们希望在"设置"下找到所有内容

更新:我已经从"自定义首选项"屏幕重命名问题以编辑项目列表,因为现在很清楚我正在尝试从PreferenceScreen启动活动.sh404的答案有帮助,但我找不到正确的语法来引用我想要的活动.也许它是monodroid特有的.(ActivityNotFoundException)

android android-layout xamarin.android

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

使用F#代码中的C#中定义的扩展方法

我为C#库中的各种类定义了一系列扩展方法.我正在编写一些F#代码,而不是重写代码,我只想在我的F#代码中使用现有的扩展方法.

我添加了对库的引用并使用open语句导入命名空间,但扩展方法没有出现在F#中

c# extension-methods f#

11
推荐指数
2
解决办法
2115
查看次数

在F#中将字节转换为枚举的实例

让我们考虑一下C#中的以下枚举

public enum ScrollMode : byte
{
      None = 0,
      Left = 1,
      Right = 2,
      Up = 3,
      Down = 4
}
Run Code Online (Sandbox Code Playgroud)

F#代码接收一个字节,并且必须返回我尝试过的枚举实例

let mode = 1uy
let x = (ScrollMode)mode
Run Code Online (Sandbox Code Playgroud)

(当然在实际应用中我没有设置'模式',它是作为网络数据的一部分接收的).

上面的例子没有编译,有什么建议吗?

enums f#

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

创建导入的MEF部件的多个实例

目前我的WPF应用程序导入了这样的部分

[Import(typeof(ILedPanel)]
public ILedPanel Panel { get; set; }
Run Code Online (Sandbox Code Playgroud)

但是这给了ma实现ILedPanel的类的单个intance.我真正想做的是能够创建我需要的尽可能多的实例.请注意,在任何给定时间,软件中只包含一个ILedPanel导出.

(如果我使用带有List的导入,它为每个实现ILedPanel的类提供了一个实例)

有什么建议?

.net c# mef

11
推荐指数
4
解决办法
8724
查看次数

在哪里可以找到SocketException抛出的SocketErrorCode和NativeErrorCode列表?

SocketException有一个SocketErrorCode和NativeErrorCode.我想找到一个列表,其中列出了这些代码(或常见的onces),以便我能够以适当的方式做出回应.

有谁知道在哪里找到这样的清单?

.net c# sockets winapi exception

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

获取ViewBox中项目的大小(在"拉伸"之后)

考虑以下:

假设Window是1024x768并且ViewBox填充整个窗口,这意味着TextBox在屏幕上非常大.

我想获得当前在屏幕上的TextBox的大小.如果我得到DesiredSize或ActualSize甚至是RenderedSize,我总是得到100.

有什么建议?

更新:我可能会得到ActualWidthViewBox并将其除以它ActualWidth的子项,这会给我当前的比例因子并以某种方式将其作为属性公开,但我不确定这是最好的方法.

size wpf viewbox actualwidth

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