Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从VBA COM.Interop访问C#类_C#_Vba_Com Interop - Fatal编程技术网

从VBA COM.Interop访问C#类

从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(); }

错误:未定义属性let过程,并且属性get过程未返回对象vba 以下是相关代码:

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);
}
}

我的全班同学都在这里

这很复杂。你为什么不这样做呢:这似乎是可行的,这是相当复杂的。你为什么不这样做呢:这似乎很有效