C# 中部分属性的替换是什么?

本文关键字:替换 是什么 属性 中部 | 更新日期: 2023-09-27 17:55:16

我有一个应用程序(mvc 3),其中的代码是为datacontext类自动生成的。我需要扩展功能,所以我创建了同名的分部类。但我发现只有"void 方法"可以标记为部分,而我需要某种部分属性。

那么,有没有办法在 C# 中扩展属性的功能?

更新:

这是代码:

    public Table<Post> Posts
    {
        get
        {
            // writing info into Trace file
            Log = Console.Out;
            var result = this.GetTable<Post>();
            Log = new LogLinqToSql();
            SubmitChanges();
            return result;
        }
    }

问题是,如果我对数据模型进行任何更改,此代码将消失,那么如何将其移动到"更安全"的位置呢?

C# 中部分属性的替换是什么?

很抱歉使用答案字段,该帖子用于上面的讨论:

您不能只将数据上下文中的属性包装在类中的另一个属性中吗?

例如

partial class NewClass
{
    public Table<Post> NewProperty
    {
        get
        {
            DoHouseKeeping();
            return this.PropertyFromOtherPartialClass;
        }
    }
}

只有类需要标记为部分类。

我的问题(提供日志记录)的解决方案很简单: 在自动生成的代码中,有一堆部分帮助程序方法。还有一个方法"OnCreated",在创建MyTypeDataContext类的实例时调用。因此,我只需要执行以下操作:

public partial class WebStoreDataContext
{
    partial void OnCreated()
    {
        // writing info into Trace file
        Log = Console.Out;
        Log = new LogLinqToSql();
        SubmitChanges();
    }
}

如果您想将属性添加到属性中,这篇文章提供了所有信息)