Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.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
C# Excel我有一个编译为tlb的.Net对象,但除了Dispose之外,无法访问任何方法_C#_Interface_Excel_Vba - Fatal编程技术网

C# Excel我有一个编译为tlb的.Net对象,但除了Dispose之外,无法访问任何方法

C# Excel我有一个编译为tlb的.Net对象,但除了Dispose之外,无法访问任何方法,c#,interface,excel,vba,C#,Interface,Excel,Vba,这是我昨天发布的内容的持续问题 我有一个要在Excel中使用的.net对象。我有一个现有的VBA脚本,我需要对其进行修改,以便从中调用该对象。然后我将该对象转换为TLB。我以前没有真正接触过这个领域,所以任何帮助都将不胜感激 我已经创建了一个接口 [Guid("0F700B48-E0CA-446b-B87E-555BCC317D74"),InterfaceType(ComInterfaceType.InterfaceIsDual)] [ComVisible(true)] public inter

这是我昨天发布的内容的持续问题

我有一个要在Excel中使用的.net对象。我有一个现有的VBA脚本,我需要对其进行修改,以便从中调用该对象。然后我将该对象转换为TLB。我以前没有真正接触过这个领域,所以任何帮助都将不胜感激

我已经创建了一个接口

[Guid("0F700B48-E0CA-446b-B87E-555BCC317D74"),InterfaceType(ComInterfaceType.InterfaceIsDual)]
[ComVisible(true)]
public interface IOfficeCOMInterface
{

    [DispId(1)]
    void ResetOrder();
    [DispId(2)]
    void SetDeliveryAddress(string PostalName, string AddressLine1, string AddressLine2, string AddressLine3, string AddressLine4, string PostCode, string CountryCode, string TelephoneNo, string FaxNo, string EmailAddress);
}
我还创建了一个继承该对象的类

[ClassInterface(ClassInterfaceType.None), ProgId("NAMESPACE.OfficeCOMInterface"), Guid("9D9723F9-8CF1-4834-BE69-C3FEAAAAB530"), ComVisible(true)]
public class OfficeCOMInterface : IOfficeCOMInterface, IDisposable
{
 public void ResetSOPOrder()
    {

    }
public void SetDeliveryAddress(string PostalName, string AddressLine1, string AddressLine2, string AddressLine3, string AddressLine4, string PostCode, string CountryCode, string TelephoneNo, string FaxNo, string EmailAddress)
    {

        try
        {
            SalesOrder.AmendDeliveryAddress(PostalName, AddressLine1, AddressLine2, AddressLine3, AddressLine4, PostCode);

            MessageBox.Show("Delivery address set");
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
}

除了dispose,我无法访问对象方法,我想IDisposable可以正常工作。我的界面需要什么吗?

只是想让任何人知道我使用了这里的说明,并设法使其正常工作


感谢您回复0xA3,以便让任何人知道我使用了此处的说明,并设法使其正常工作


感谢您回复0xA3

您的.NET程序集是否实际使用regasm注册?注意:我知道这只是一个示例,但它似乎显示了一个容易发生的误解。代码
catch(Exception ex){throw ex;}
实际上没有做任何有用的事情<代码>抛出ex将重置堆栈跟踪,您将丢失重要信息。这可能不是你期望它做的,也几乎不是你想要的。您可能只是想重新抛出异常(例如,在写入日志之后)。为此,更换
抛出ex与一个简单的
抛出。嗨,是的,我用过regasm。我有更多关于这个异常的代码,但我认为我可以简化它作为例子。每次尝试创建实例时,我都会收到一个错误,系统无法找到指定的文件。错误消息是否提供了找不到的文件的更多详细信息?您的.NET程序集是否实际使用regasm注册?注意:我知道这只是一个示例,但它似乎显示了一个容易发生的误解。代码
catch(Exception ex){throw ex;}
实际上没有做任何有用的事情<代码>抛出ex将重置堆栈跟踪,您将丢失重要信息。这可能不是你期望它做的,也几乎不是你想要的。您可能只是想重新抛出异常(例如,在写入日志之后)。为此,更换
抛出ex与一个简单的
抛出。嗨,是的,我用过regasm。我有更多关于这个异常的代码,但我认为我可以简化它作为例子。每次尝试创建实例时,我都会收到一个错误,系统无法找到指定的文件。错误消息是否提供了无法找到的文件的更多详细信息?