从VBA COM.Interop访问C#类
错误:未定义属性let过程,并且属性get过程未返回对象vba 以下是相关代码:从VBA COM.Interop访问C#类,c#,vba,com-interop,C#,Vba,Com Interop,错误:未定义属性let过程,并且属性get过程未返回对象vba 以下是相关代码: namespace Entities { [Guid("E65658F2-67C4-4F86-890C-62517EFB19AC")] [ComVisible(true)] public interface IFieldTags { [DispId(-4)] FieldTagsEnumerator GetEnumerator(); }
namespace Entities
{
[Guid("E65658F2-67C4-4F86-890C-62517EFB19AC")]
[ComVisible(true)]
public interface IFieldTags
{
[DispId(-4)]
FieldTagsEnumerator GetEnumerator();
}
[Guid("472DDF54-E42D-4E6D-9D62-1507CDB2ED0A")]
[ClassInterface(ClassInterfaceType.AutoDispatch)]
[ComVisible(true)]
public class FieldTags : IEnumerable, IFieldTags
{
private List<FieldTag> fieldTagsList;
internal FieldTags(Document document, Tools tools)
{
this.constants = tools.Constants;
this.document = document;
this.fieldTagsList = GetFieldtagList();
}
IEnumerator IEnumerable.GetEnumerator()
{
return (IEnumerator)GetEnumerator();
}
public FieldTagsEnumerator GetEnumerator()
{
return new FieldTagsEnumerator(this.fieldTagsList);
}
}
public class FieldTagsEnumerator : IEnumerator
{
private readonly List<FieldTag> fieldTagsCollection;
private int position = -1;
public FieldTagsEnumerator(List<FieldTag> fieldTagsList)
{
fieldTagsCollection = fieldTagsList;
}
}
}
对于每个原因错误,此方法是否正确?如何在循环中使用FieldTags?我不是专家,但最近解决了VBA C#字典包装的这个问题 下面是我如何为c#包装的词典管理它的
private Dictionary<dynamic, dynamic> Host = new Dictionary<dynamic, dynamic>();
public IEnumerator GetEnumerator()
{
foreach (KeyValuePair<dynamic, dynamic> myPair in Host)
{
yield return new KVPair(myPair.Key, myPair.Value);
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
private Dictionary Host=new Dictionary();
公共IEnumerator GetEnumerator()
{
foreach(主机中的KeyValuePair myPair)
{
返回新的KVPair(myPair.Key,myPair.Value);
}
}
IEnumerator IEnumerable.GetEnumerator()
{
返回GetEnumerator();
}
当我在vba类中包装我的c#对象时
// Allows a wrapped Kvp to be enumerated in VBA
public IEnumerator KvpEnum()
{
foreach (KeyValuePair<dynamic, dynamic> myPair in Host)
{
yield return new KVPair(myPair.Key, myPair.Value);
}
}
//允许在VBA中枚举包装的Kvp
公共IEnumerator KvpEnum()
{
foreach(主机中的KeyValuePair myPair)
{
返回新的KVPair(myPair.Key,myPair.Value);
}
}
我的全班同学都在这里我不是专家,但最近为VBA的C#字典包装解决了这个问题 下面是我如何为c#包装的词典管理它的
private Dictionary<dynamic, dynamic> Host = new Dictionary<dynamic, dynamic>();
public IEnumerator GetEnumerator()
{
foreach (KeyValuePair<dynamic, dynamic> myPair in Host)
{
yield return new KVPair(myPair.Key, myPair.Value);
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
private Dictionary Host=new Dictionary();
公共IEnumerator GetEnumerator()
{
foreach(主机中的KeyValuePair myPair)
{
返回新的KVPair(myPair.Key,myPair.Value);
}
}
IEnumerator IEnumerable.GetEnumerator()
{
返回GetEnumerator();
}
当我在vba类中包装我的c#对象时
// Allows a wrapped Kvp to be enumerated in VBA
public IEnumerator KvpEnum()
{
foreach (KeyValuePair<dynamic, dynamic> myPair in Host)
{
yield return new KVPair(myPair.Key, myPair.Value);
}
}
//允许在VBA中枚举包装的Kvp
公共IEnumerator KvpEnum()
{
foreach(主机中的KeyValuePair myPair)
{
返回新的KVPair(myPair.Key,myPair.Value);
}
}
我的全班同学都在这里这很复杂。你为什么不这样做呢:这似乎是可行的,这是相当复杂的。你为什么不这样做呢:这似乎很有效