C#中部分属性的替换是什么?
我有一个应用程序(MVC3),其中的代码是为datacontext类自动生成的。我需要扩展功能,所以我创建了同名的分部类。但我发现只有“void方法”可以标记为partial,而我需要某种partial属性 那么,有没有办法在C#中扩展属性的功能呢 更新: 代码如下:C#中部分属性的替换是什么?,c#,asp.net,asp.net-mvc-3,properties,partial,C#,Asp.net,Asp.net Mvc 3,Properties,Partial,我有一个应用程序(MVC3),其中的代码是为datacontext类自动生成的。我需要扩展功能,所以我创建了同名的分部类。但我发现只有“void方法”可以标记为partial,而我需要某种partial属性 那么,有没有办法在C#中扩展属性的功能呢 更新: 代码如下: public Table<Post> Posts { get { // writing info into Trace file
public Table<Post> Posts
{
get
{
// writing info into Trace file
Log = Console.Out;
var result = this.GetTable<Post>();
Log = new LogLinqToSql();
SubmitChanges();
return result;
}
}
公共表Posts
{
得到
{
//将信息写入跟踪文件
Log=Console.Out;
var result=this.GetTable();
Log=新的LogLinqToSql();
提交更改();
返回结果;
}
}
问题是,如果我对数据模型进行任何更改,此代码将消失,那么我如何才能将其移动到“更安全”的位置?很抱歉使用“答案”字段,此帖子用于上面的讨论: 不能将DataContext中的属性包装到类中的另一个属性中吗 e、 g
部分类NewClass
{
公共表NewProperty
{
得到
{
dohousing();
从其他PartialClass返回此.Property;
}
}
}
只有类需要标记为partial。我的问题的解决方案(提供日志记录)很简单:在自动生成的代码中有一堆partial helper方法。还有一个方法“OnCreated”,它是在创建MyTypeDataContext类的实例时调用的。所以,我只需要做以下几点:
public partial class WebStoreDataContext
{
partial void OnCreated()
{
// writing info into Trace file
Log = Console.Out;
Log = new LogLinqToSql();
SubmitChanges();
}
}
如果要向属性添加属性(提供所有信息)为什么需要部分属性?因为我想将生成的(通过Linq)Sql代码写入日志文件即使您可以写入部分属性,您将如何拦截和访问生成的Sql?如何使用“部分属性”工作?@AlekseiChepovoi:这正是部分职业的闪光点。我不明白问题出在哪里。您不需要将属性本身标记为
partial
。只需将类设置为部分
,并将属性放在“您自己的一半”中即可。当然,自动生成的一半也必须标记为partial
。这种方法是可能的,但我必须更改一半的代码)还有另一个问题:您将公开两个属性—一个在partial类中,一个在DataContext中,并且只应使用类中的属性(忽略另一个). 这使得它非常不直观
public partial class WebStoreDataContext
{
partial void OnCreated()
{
// writing info into Trace file
Log = Console.Out;
Log = new LogLinqToSql();
SubmitChanges();
}
}