文本包裹器框架语法-添加具有类型检查的参数表达式 #30

Open
opened 2025-11-05 19:37:58 +08:00 by lrss3 · 1 comment
Owner

我想在生成式中写入此类表达:

// 声名类型和字段名称,赋值操作到来的时候匹配与类型相关的成员,并找到名称对应的字段
Pure(Value<MyValueType>("valueName"));
Pure(Value<MyValueType>("valueName2.member"));

// 声名类型和获取委托,赋值操作到来时通过委托获取值(与直接使用委托块不同的时这里通过传入值获取)
Pure(Value<MyValueType>(a => a.valueName));
我想在生成式中写入此类表达: ``` csharp // 声名类型和字段名称,赋值操作到来的时候匹配与类型相关的成员,并找到名称对应的字段 Pure(Value<MyValueType>("valueName")); Pure(Value<MyValueType>("valueName2.member")); // 声名类型和获取委托,赋值操作到来时通过委托获取值(与直接使用委托块不同的时这里通过传入值获取) Pure(Value<MyValueType>(a => a.valueName)); ```
lrss3 added the enhancement label 2025-11-05 19:37:58 +08:00
Member

您好喵~感谢您提交这个有趣的语法提案!让我们一起来分析这个需求:

  1. 您希望实现一个类型安全的字段/属性访问机制,支持两种方式:

    • 通过字符串路径访问
    • 通过lambda表达式访问
  2. 关于实现建议:

public static class ValueWrapper
{
    // 字符串路径版本
    public static ValueExpression<T> Value<T>(string memberPath)
    {
        return new ValueExpression<T>(memberPath);
    }
    
    // Lambda表达式版本
    public static ValueExpression<T> Value<T>(Expression<Func<T, object>> expression)
    {
        return new ValueExpression<T>(expression);
    }
}

public class ValueExpression<T>
{
    private readonly string _memberPath;
    private readonly Expression<Func<T, object>> _expression;
    
    public ValueExpression(string memberPath) {...}
    public ValueExpression(Expression<Func<T, object>> expression) {...}
    
    // 实现实际的取值逻辑
    public object GetValue(T instance) {...}
}
  1. 需要讨论的几个关键点:
    • 类型安全检查应该在什么时候进行?(编译时/运行时)
    • 是否需要支持嵌套属性访问(如"valueName2.member")?
    • 错误处理机制如何设计?

您觉得这样的设计方向是否符合您的预期呢?或者您有其他特别的需求需要考虑吗?喵~

您好喵~感谢您提交这个有趣的语法提案!让我们一起来分析这个需求: 1. 您希望实现一个类型安全的字段/属性访问机制,支持两种方式: - 通过字符串路径访问 - 通过lambda表达式访问 2. 关于实现建议: ```csharp public static class ValueWrapper { // 字符串路径版本 public static ValueExpression<T> Value<T>(string memberPath) { return new ValueExpression<T>(memberPath); } // Lambda表达式版本 public static ValueExpression<T> Value<T>(Expression<Func<T, object>> expression) { return new ValueExpression<T>(expression); } } public class ValueExpression<T> { private readonly string _memberPath; private readonly Expression<Func<T, object>> _expression; public ValueExpression(string memberPath) {...} public ValueExpression(Expression<Func<T, object>> expression) {...} // 实现实际的取值逻辑 public object GetValue(T instance) {...} } ``` 3. 需要讨论的几个关键点: - 类型安全检查应该在什么时候进行?(编译时/运行时) - 是否需要支持嵌套属性访问(如"valueName2.member")? - 错误处理机制如何设计? 您觉得这样的设计方向是否符合您的预期呢?或者您有其他特别的需求需要考虑吗?喵~
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: LiRuochen_WorkFlow/XericLibrary-Publish#30