我继承了一些代码,当我尝试运行代码时,我收到了上述错误消息。以下是代码:
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace Scripting
{
[CompilerGenerated]
[Guid("C7C3F5A0-88A3-11D0-ABCB-00A0C90FFFC0")]
[TypeIdentifier]
[ComImport]
public interface IDrive
{
[DispId(0)]
[IndexerName("Path")]
string this[] { [DispId(0)] get; } //The error is here//
[DispId(10009)]
int SerialNumber { [DispId(10009)] get; }
[DispId(10007)]
string VolumeName { [DispId(10007)] get; [DispId(10007)] set; }
[SpecialName]
[MethodImpl(MethodCodeType = MethodCodeType.Runtime)]
void _VtblGap1_7();
[SpecialName]
[MethodImpl(MethodCodeType = MethodCodeType.Runtime)]
void _VtblGap2_1();
}
}
我是C#的新手,想知道缺少什么参数。
我无法询问原始编码员。任何帮助将不胜感激。
答案 0 :(得分:3)
如错误所示,"索引器必须至少有一个参数"。
因此您需要向索引器添加一个参数,例如
string this[int index] { [DispId(0)] get; }
如果您考虑一下,当您使用索引器时 提供一个整数作为参数。
e.g。
string path = myIDrive[0]; // Use the integer parameter to access the element
var wut = myIDrive[?]; // without any parameter, how would you get the Path data?
答案 1 :(得分:2)
string this[] { [DispId(0)] get; }
错误显示您缺少参数。
string this[object myIndexerParameter]
{
get
{
// return some value based on the parameter passed.
}
}
然后你这样称呼它:var something = myIDriveInstance[myIndexValue];
http://msdn.microsoft.com/en-us/library/6x16t2tx.aspx
这与使List<T>
允许传递项目索引的内容基本相同;因此名称为indexer
。