标签: partial-classes

实现linqtosql部分DataContext类 - 如何检查值之前/之后

我正在尝试扩展VS设计器生成的linqtosql类,并需要确定特定字段的值是否已更改.有没有办法让我在表格/实体的DataContext Update方法中访问字段的前后值?

这是我的代码:

public partial class DataClassesDataContext
{
    partial void UpdateActivity(Activity instance)
    {
        this.ExecuteDynamicUpdate(instance);
        //need to compare before and after values to determine if instance.AssignedTo value has changed and take action if it has
    }
}
Run Code Online (Sandbox Code Playgroud)

我也愿意在Activity实体类中添加一个属性来表示值是否已更改,但我无法弄清楚如何判断值是否已更改.我不能只使用Activity类的OnAssignedToChanged方法,因为只要设置了属性值就会触发,不一定会更改.我正在使用ListView和LINQDataSource控件进行更新,因此无论如何都会设置它.

我还以为我可以使用OnAssignedToChanging方法,但是Activity实例似乎没有当前值.以下代码不起作用.AssignedTo始终为null.

partial void OnAssignedToChanging(int? value)
{
   if (value != this.AssignedTo)
   {
      _reassigned = true;
   }
}
Run Code Online (Sandbox Code Playgroud)

partial-classes linq-to-sql

3
推荐指数
1
解决办法
1587
查看次数

如何在不必每次生成代码时进行更改的情况下扩展LINQ-to-SQL类?


评论更新:

我需要通过自己的参数扩展linq-to-sql类,并且不想触及任何生成的类.欢迎任何更好的建议.但是如果linq-to-sql类正在改变,我也不想再次进行所有属性赋值.因此,如果vstudio为类生成新属性,我将自己的扩展属性保持独立,并且新的内部来自类本身


原始问题:

我不确定是否可能.我有一辆级轿车和一辆mycar从班级车延伸出来.mycar类也有一个字符串列表.唯一的区别.

如何将现在的任何汽车对象投射到mycar对象,而无需手动分配所有属性.喜欢:

Car car = new Car();

MyCar mcar = (MyCar) car;
Run Code Online (Sandbox Code Playgroud)

要么

MyCar mcar = new MyCar(car);
Run Code Online (Sandbox Code Playgroud)

或者我可以用自己的变量扩展汽车,而不必总是这样做

Car car = new Car();
MyCar mcar = new MyCar();
mcar.name = car.name;
mcar.xyz = car.xyz;
...
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# casting partial-classes .net-3.5

3
推荐指数
1
解决办法
4003
查看次数

/反对使用部分类进行测试的原因?

使用部分类编写NUnit测试的优缺点是什么?

我要开始了:

亲:私有方法可以测试
con:TDD不再可能了

还有什么?

c# nunit partial-classes

3
推荐指数
1
解决办法
1661
查看次数

接口方法返回类型是实现接口的类

我无法理解界面.在这里搜索了类似的问题后,我想出了以下界面,用于定义所有类所需的CRUD操作:

public interface IData<T>
{
    IData<T> Select(int id);
    List<T> SelectMultiple();
    void Insert();
    void Update();
    void Delete();
}
Run Code Online (Sandbox Code Playgroud)

然后在我的部分类中实现:

public partial class Post : IData<Post>
{
    public IData<Post> Select(int id)
    {
        MyDataContext dc = MyDataContext.Create();
        return dc.Posts.Single(p => p.PostID == id);
    }

    public List<Post> SelectMultiple()
    {
        MyDataContext dc = MyDataContext.Create();
        return dc.Posts.ToList();
    }

    // Update() and Delete() declarations
}
Run Code Online (Sandbox Code Playgroud)

这个都编译得很好,但是如果我尝试使用Post Select()方法:

Post p = new Post().Select(1);
Run Code Online (Sandbox Code Playgroud)

失败,无法将类型'IData'隐式转换为'Post'.存在显式转换(您是否错过了演员?)

这是有道理的,但我如何拥有它以便它不需要演员?我希望Select返回一个帖子(但不要将Post定义为接口级别的返回类型).我是否误解了界面,或者我可以做出快速修改?

c# interface partial-classes

3
推荐指数
1
解决办法
2万
查看次数

实体框架4.1部分类初始化

在实体Framework 4.1数据库中,首先在生成的c#类中有一个构造函数,那么我在哪里可以进行部分类自定义初始化?

c# entity-framework partial-classes entity-framework-4.1

3
推荐指数
1
解决办法
1749
查看次数

使用部分类而不是Facade模式本身就是反模式吗?

几年前,我被告知要在单独的.cs文件中实现业务逻辑代码,尽管这些文件包含了相同的分部类.所以可以从业务层调用一个方法,如下所示:

using(FooPartialDisposableClass partialClassInstance = new FooPartialDisposableClass ())
partialClassInstance.BusinessMethod();
Run Code Online (Sandbox Code Playgroud)

好.所以现在,我正在做同样的事情,这次我正在使用Facade模式.这个解决方案似乎是一种更好的方法,即使你必须编写更多的代码并且它的可维护性更低.

那么,我的问题是......按照部分类方法是否正确?

PS:我还想到了接口和依赖注入,以便将这一层与将要使用这些业务逻辑方法的层分离,但是考虑到这里的工作方式,这是一个禁忌:S

c# facade partial-classes

3
推荐指数
1
解决办法
1113
查看次数

如何将初始化列表构造函数添加到STL向量

所以我想要做的是扩展程序中现有的vector类,让我这样说,

vector<string>* vec = new vector<string>(){"Value1","Value2"};
Run Code Online (Sandbox Code Playgroud)

要么

vector<string>* vec = new vector<string>({"Value1","Value2"});
Run Code Online (Sandbox Code Playgroud)

要么

vector<string> vec = {"Value1","Value2"};
Run Code Online (Sandbox Code Playgroud)

我知道我可以做到这样的事情,但这样做,

string temp[] = {"Value1","Value2"};
vector<string> vec(temp, temp+ sizeof(temp) /  sizeof( temp[0] ) ); 
Run Code Online (Sandbox Code Playgroud)

这使用向量迭代器构造函数但不能删除额外的行吗?

我知道在C#中你可以使用这样的partial关键词添加你想要的任何东西,

public partial class ClassName
{
   ClassName(Stuff stuff)
   {

   }
   void AmazingNewMethod()
   {

   }    
}
Run Code Online (Sandbox Code Playgroud)

C++在某个地方有一个漂亮的技巧吗?

我是否必须继承vector并构建一个customVector具有构造函数的构造函数,它在后面执行迭代器构造函数的事情?

也许将这些行包装在一个静态Helper函数调用中,该调用通过Reference设置它并将其添加到某个工具箱类中?

我觉得很多程序员都遇到过这个问题.那里有优雅的解决方案吗?

谢谢.

编辑:修复标题,提到这是一个初始化列表构造函数.

c++ iterator vector partial-classes

3
推荐指数
2
解决办法
4649
查看次数

在类外写的嵌套类

我喜欢使用私有嵌套类,除了它们总是感觉如此混乱.通常我把它们放在自己的中#region,但是我希望它们在位置方面与它们的父类分开,而且我也不希望它们在单独的文件中.我决定做的是让他们的父类成为局部,然后将子类放在文件中父类的下面.

不幸的是,似乎每个文件都不能有多个部分类定义.

(编辑:事实证明,每个文件可以有多个部分部分;它只是表单设计者不喜欢它.)

我真正想做的是(所有在一个文件中):

internal class Parent
{
}

private class Parent.Child1
{
}

private class Parent.Child2
{
}
Run Code Online (Sandbox Code Playgroud)

但似乎我所能做的就是为每个新的子类生成一个新的源文件,或者像这样安排它们:

internal class Parent
{
   private class Child1
   {
   }

   private class Child2
   {
   }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法完成我在这里要做的事情?

c# partial-classes nested-class

3
推荐指数
1
解决办法
2688
查看次数

部分类优于继承的优点是什么?

C#具有部分类的概念.我见过的一个例子就是WSDLs.Visual Studio可以联系服务器以查找服务,并根据它自动生成部分类.然后,Visual Studios将为您提供一个空白的部分类来匹配它,以便您可以添加自己的代码.

我觉得这种做法相当令人困惑.部分类优于继承是否有任何优势?

c# wsdl partial-classes partial generated-code

3
推荐指数
2
解决办法
689
查看次数

.Net 如何为分部类创建构造函数?

我有一个带有构造函数的分部类,但是构造函数抛出错误,因为“已经声明了具有相同签名的成员”(另一个分部类中存在同名的构造函数)。当名称已被使用时,如何为分部类创建构造函数?

public partial class DigitalArchivesAssetsDataContext
{
    public DigitalArchivesAssetsDataContext()
        : base(System.Configuration.ConfigurationManager.ConnectionStrings["digitalArchivesAssets"].ConnectionString, mappingSource)
    {
        OnCreated();
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net constructor partial-classes

3
推荐指数
1
解决办法
6242
查看次数