使用 Excel-Dna 的链函数调用
Chain function calls using Excel-Dna
Is it possible to chain function calls using Excel-Dna?
我正在尝试从 Excel Sheet:
调用类似的东西
=CreateAccount(CreateUser("John","Doe"))
但是内函数CreateUser
returnsExcelErrorValue
.
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
对象。
Is it possible to chain function calls using Excel-Dna?
我正在尝试从 Excel Sheet:
调用类似的东西=CreateAccount(CreateUser("John","Doe"))
但是内函数CreateUser
returnsExcelErrorValue
.
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
对象。