gpt4 book ai didi

单声道出现意外的编译器错误

转载 作者:行者123 更新时间:2023-12-02 10:55:06 25 4
gpt4 key购买 nike

我有以下类(class)

public class LockRequest
{
public int Id { get; set; }
public string TypeName { get; set; }
public bool Ok { get; set; }

public LockRequest ( int id, string t)
{
Id = id;
TypeName = t;
}
}

然后,它在一个委托(delegate)中被引用,如下
private static void ReceiveLockRequest<LockRequest>(PacketHeader header, Connection   connection, LockRequest input )
{
LockRequest lr = new LockRequest(1, "SomeTypeName" );

Console.WriteLine( String.Format ( "{0} ", input.TypeName) );
}

编译时,委托(delegate)的两行都会引发编译器错误。
带有“new()”的行产生“无法创建类型类 'LockRequest' 的实例,因为它没有 'new()' 约束。
将显示一些输入数据的行给出“'Lockrequest'类型不包含'TypeName'的定义并且没有扩展方法'TypeName'......等”。

有人可以解释为什么会这样吗?

我的开发环境是 Ubuntu 10.04(64 位)和 Monodevelop 2.8.6.3

TIA

可以补充一些信息。

我更改了类的名称,并编译了东西。整个类要被ProtoBuf序列化,所以必须用属性修饰。这是一个示例
[ProtoContract]
public class Foo
{
[ProtoMember(1)]
public int { get; protected set; }

[ProtoMember(2)]
public string TypeName { get; protected set; }

...

就在我添加属性之后,单声道停止编译。同样的错误再次出现。
为了测试它,我对属性进行了注释,进行了全部清理,重新编译。错误再次出现,好像 MonoDevelop 缓存了它们。

与最初的帖子相比,我需要一些帮助。

2013-10-31

谢谢你, clown 。它是一个来自 NetworkCommDotNet 库的事件处理程序。

我的缺点:

1)第一个错误(成员无法识别)源于(有点令人惊讶)“输入”参数作为普通对象出现的事实。用另一种方法类型转换它就可以了。
2) 关于实例化的错误:库中的委托(delegate)定义有一个 where 子句,其中声明 T 必须是类,但没有 new() 约束。

最佳答案

那不是委托(delegate),那是通用方法。
目前尚不清楚您想做什么以及为什么需要通用方法。
如果您真的这样做,请尝试以下方式:

private static void ReceiveLockRequest<T>(PacketHeader header, Connection   connection, T input) where T:LockRequest

PS:你的开发环境很老,考虑升级。

关于单声道出现意外的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19690367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com