0

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

那么,有没有办法在 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;
        }
    }

问题是,如果我对数据模型进行任何更改,这段代码就会消失,那么我怎样才能将它移动到“更安全”的地方呢?

4

2 回答 2

0

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

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

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

于 2013-01-23T16:30:31.323 回答
0

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

你不能只将 DataContext 中的属性包装在你类中的另一个属性中吗

例如

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

只有类需要标记为部分。

于 2013-01-23T12:55:43.977 回答