使用 Excel-Dna 的链函数调用

Chain function calls using Excel-Dna

Is it possible to chain function calls using Excel-Dna?

我正在尝试从 Excel Sheet:

调用类似的东西

=CreateAccount(CreateUser("John","Doe"))

但是内函数CreateUserreturnsExcelErrorValue.

Demo C# code looks like this:

namespace ExcelDnaDemo
{
    using ExcelDna.Integration;

    public static class MyFunctions
    {
        [ExcelFunction(Description = "C-U")]
        public static object CreateUser(string firstName, string lastName)
        {
            return new User(firstName, lastName);
        }

        [ExcelFunction(Description = "C-A")]
        public static string CreateAccount(
            [ExcelArgument(
                Name = "Usr",
                Description = "User test", AllowReference = true)]
            object user)
        {
            var a = new Account(user);
            return $"{a.User.FirstName} {a.User.LastName} {a.Id}";
        }
    }

    public class User
    {
        public User(string firstName, string lastName)
        {
            FirstName = firstName;
            LastName = lastName;
        }
        public string FirstName { get; set; }
        public string LastName { get; set; }
    }

    public class Account
    {
        public object User { get; private set; }
        public Guid Id { get; private set; }
        public Account(object user)
        {
            User = user;
            Id = Guid.NewGuid();
        }
    }
}

您可以将新用户添加到内部 Dictionary<string, User> 和 return 某种密钥,例如"User:1" 来自 CreateUser 函数。然后在 CreateAccount 中输入字符串键,并检查它是否存在于字典中以检索缓存的 User 对象。