日期:2014-05-18  浏览次数:20702 次

XSL引用DLL里面的函数问题
最近在做一个项目,要在XSL文件里面调用C#写的一个DLL里面的函数
假设XSL文件跟DLL在一个路径下,调用DLL里面的Logic.Usp下的GetName()函数其中Logic是命名空间,Usp是类名

最好能给出一个例子,谢谢您能帮忙。

------解决方案--------------------
1. 封装.net的assembly
定义一个接口,一个实现类。接口是为了导出TLB用的。
给COM公开的方法都要加上[ComVisible(True)]的特性
C# code

using System.IO;
using System.Runtime.InteropServices;

namespace CSCOMLib
{
    [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    [ComVisible(true)]
    public interface IDirectory4COM
    {
        string[] GetAllFiles(string directory);
        bool IsExistsDir(string directory);
    }

    [Guid("9E5E5FB2-219D-4ee7-AB27-E4DBED8E123E"),ClassInterface(ClassInterfaceType.None)]
    [ComSourceInterfaces((typeof(IDirectory4COM)))]
    [ComVisible(true)]
    public class Directory4COM : IDirectory4COM
    {
        [ComVisible(true)]
        public string[] GetAllFiles(string directory)
        {
            return Directory.GetFiles(directory);
        }

        [ComVisible(true)]
        public bool IsExistsDir(string directory)
        {
            return Directory.Exists(directory);
        }
    }
}