我有几个带有索引属性的 Delphi Prism 类,我在 C# Web 应用程序中经常使用它们(我们正在将大型 Delphi Win32 系统迁移到 ASP.Net)。我的问题是,如果索引属性不是其类的默认属性,C# 似乎看不到它们。也许我做错了什么,但我完全迷失了。
我知道这个问题看起来很像错误报告,但在我报告错误之前,我需要知道其他人是否知道如何解决这个问题。
如果我有这样的课程:
TMyClass = public class
private
...
method get_IndexedBool(index: Integer): boolean;
method set_IndexedBool(index: Integer; value: boolean);
public
property IndexedBool[index: Integer]: boolean
read get_IndexedBool
write set_IndexedBool; default; // make IndexedBool the default property
end;
我可以像这样在 C# 中使用这个类:
var myObj = new TMyClass();
myObj[0] = true;
但是,如果 TMyClass 是这样定义的:
TMyClass = public class
private
...
method get_IndexedBool(index: Integer): boolean;
method set_IndexedBool(index: Integer; value: boolean);
public
property IndexedBool[index: Integer]: boolean
read get_IndexedBool
write set_IndexedBool; // IndexedBool is not the default property anymore
end;
然后 IndexedBool 属性在 C# 中变得不可见。我可以使用它的唯一方法是这样做:
var myObj = new TMyClass();
myObj.set_IndexedBool(0, true);
我不知道我是否遗漏了什么,但如果我删除属性声明中的默认值,我将看不到 IndexedBool 属性。除此之外,我很确定直接访问类实例的私有方法是错误的。
有任何想法吗?