- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试为遍历 csharp 代码设置一个不错的 REPL
。但是我似乎无法编写 EnvDTE.ProjectItem(接口(interface))的实现。
接口(interface)上行为不当属性的定义在索引器中为:
字符串文件名[short i] {get;}
基于 this post我试过了
[IndexerName("FileNames")]
string ProjectItem.this[short i] {get{return "test";}}
在显式接口(interface)声明中说'this'不是接口(interface)的成员
[IndexerName("FileNames")]
public string this[short i] {get{return "test";}}
返回 Accessor 'UserQuery.ProjectItemFake.this[short].get' 无法为类型 'UserQuery.ProjectItemFake' 实现接口(interface)成员 'EnvDTE.ProjectItem.get_FileNames(short)'。使用显式接口(interface)实现。
[IndexerName("FileNames")]
string ProjectItem.this[short i] {get{return "test";}}
在显式接口(interface)声明中返回'this'不是接口(interface)的成员
我对 .net 语言完全开放,主要了解 C#、F# 或 VB.net。
你能以某种方式在 .net 中编写接口(interface) EnvDTE.ProjectItem
的实现吗?
最佳答案
只需实现方法get_FileNames(short i)
。
属性(包括索引属性)实际上被转换为方法,如 get_PropertyName
和 set_PropertyName
在后台。在大多数情况下,编译器不允许您实现这样的属性,只是因为它依赖于成员元数据。命名索引器在 C# 中不可用,但在 VB.NET 中可用,我认为该接口(interface)是在 VB.NET 中定义的(它们是 also available in F# ,但我不确定它们是否兼容)。
C# 编译器允许您将 VB.NET 索引属性实现为 get_PropertyName(Whatever x)
,因为这是实现它们的唯一方法。我试过了,它对我有用。
一个完整的C#实现如下:
class ProjectItemMock : ProjectItem{
public bool SaveAs(string newFilename) { return false;}
public EnvDTE.Window Open(string name) { return null;}
public void Remove() {}
public void ExpandView(){}
public void Save(string filename){}
public void Delete(){}
public bool IsDirty {get;set;}
public string get_FileNames(short index) {return "test";}
public short FileCount {get;set;}
public string Name{get;set;}
public string Kind { get; set; }
public EnvDTE.ProjectItems Collection {get;set;}
public EnvDTE.Properties Properties {get;set;}
public EnvDTE.DTE DTE{get;set;}
public EnvDTE.ProjectItems ProjectItems { get; set; }
public bool get_IsOpen(string s) { return false;}
public object Object { get; set; }
public object get_Extender(string s) {return null;}
public object ExtenderNames { get; set; }
public string ExtenderCATID { get; set; }
public bool Saved { get; set; }
public EnvDTE.ConfigurationManager ConfigurationManager { get; set; }
public EnvDTE.FileCodeModel FileCodeModel { get; set; }
public EnvDTE.Document Document { get; set; }
public EnvDTE.Project SubProject { get; set; }
public EnvDTE.Project ContainingProject { get; set; }
}
关于c# - 如何提供 ProjectItem.get_FileNames(i) 的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29080282/
我正在尝试为遍历 csharp 代码设置一个不错的 REPL。但是我似乎无法编写 EnvDTE.ProjectItem(接口(interface))的实现。 接口(interface)上行为不当属性的
我正在编写一个简单的 Pyramid 应用程序,并尝试运行它pservedevelopment.ini。 我得到了这个: Traceback (most recent call last): Fi
我是一名优秀的程序员,十分优秀!