标签: partial-classes

使用部分类来管理代码,很好的解决方案?

书籍通常会说,如果课程太大而无法管理,请重新考虑实施,因为设计需要更正,因为课程尚未正确定义.

但是在类确实很大的情况下,例如当一个类被扩展以实现控件的功能时(例如Canvas),并且有许多不同的东西,如命中测试,绘图,管理绘制的项目等.在这种情况下使用部分类来分离更大容器(例如自定义控件)的"不同"事物是一个很好的解决方案吗?

其次,作为一个更普遍和更广泛的解决方案,在转向部分类之前应该考虑什么?

c# refactoring coding-style partial-classes code-cleanup

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

C#和Web服务中的部分类

我正在进行的项目有很多部分类(意味着关键字'部分'已被使用),但如果它们实际上是偏向于任何东西,我不知道(我希望编译器会寻找其他部分(s) )如果没有找到,则抛出错误,但事实上它不会引发错误,这导致我的问题).

既然我没有办法告诉你,当创建一个局部类是否有其他'局部'或者没有引导我思考那些局部是否必须在同一个集合中?是否可以通过WCF或Web服务在程序集外部创建一个局部类 - 我不知道它在运行时如何工作(我想编译器会满意,因为它似乎并不关心)但我找不到任何明确的状态是或否.类似的问题解释说它不应该以这种方式使用,但实际上不能以这种方式使用.

c# partial-classes

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

在Entity Framework中向部分类添加接口不起作用

我在我的Entity Framework(v5)对象上使用了一个部分类(.NET 4.5).我为此部分类添加了一个接口,但是针对此接口测试EF对象是错误的,但应该识别接口是在部分类上定义的.这是我正在尝试的:

public interface Product : ILastModified
{
  public DateTime LastModified { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的数据层我尝试这个:

    public virtual int Update<T>(T TObject) where T : class
    {
        //WHY ALWAYS FALSE?
        if (TObject is ILastModified)
        {
          (TObject as ILastModified).LastModified = DateTime.Now;
        }

        var entry = dbContext.Entry(TObject);
        dbContext.Set<T>().Attach(TObject);
        entry.State = EntityState.Modified;
        return dbContext.SaveChanges();
    }
Run Code Online (Sandbox Code Playgroud)

问题是"if(TObject是ILastModified)"总是假的,即使我在部分类上设置它.我做错了什么或有办法实现这样的事情吗?

c# asp.net entity-framework partial-classes

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

强制覆盖基类的方法

我有以下代码:

public partial class Root : ICustomInterface
{
    public virtual void Display()
    {
        Console.WriteLine("Root");
        Console.ReadLine();
    }
}
public class Child : Root
{
    public override void Display()
    {
        Console.WriteLine("Child");
        Console.ReadLine();
    }
}
class Program
{
    static void Main(string[] args)
    {
        Root temp;
        temp = new Root();
        temp.Display();
    }
}

Output: "Root"
Desired output: "Child"
Run Code Online (Sandbox Code Playgroud)

当我实例化一个Root对象并调用该Display()方法时,我想显示重写方法,Child这是可能的.

我需要这个,因为我必须创建一个插件,该插件是基本代码的扩展Display(),并使Root类的方法无效并仅实现插件的方法Child

c# inheritance overriding interface partial-classes

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

C++中的部分类

我想避免重新编译包含公共头文件的所有内容,只是因为在类定义的私有部分中发生了某些变化.我正在调查PIMPL旁边的其他选项.

这是我试过的:

我创建了一个包含A类的库:

A_p.h包含A类的私有部分

void PrivateMethod(int i);
Run Code Online (Sandbox Code Playgroud)

公共头文件:

class A
{
public:
    A();
    virtual ~A();
    // other public members
private:
#ifdef A_PRIVATE
#include "A_p.h"
#endif
};
Run Code Online (Sandbox Code Playgroud)

A.cpp

#define A_PRIVATE
#include "A.h"

A::A() {}
A::~A() {}
void A::PrivateMethod(int i) { }
Run Code Online (Sandbox Code Playgroud)

然后,我创建了一个Win32控制台项目,其中包含公共标头(Ah)和针对.lib文件的链接.

一切似乎都有效,但我想知道沿途的任何陷阱.任何人都可以详细说明这个吗?

c++ partial-classes binary-compatibility

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

密封部分课的意义是什么?

在C#中,密封的部分类的意义是什么?

Sealed类是一个无法继承的类.

部分类是可以在2个或更多源文件之间拆分的类.

那么为什么"密封的部分类有任何意义?

c# partial-classes sealed

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

有没有办法控制 JSON 对象中的属性顺序?

我使用的是 Entity Framework Core,生成的类有自己的属性,即

数据模型.Agent.cs

public partial class Agent {

    public virtual decimal Id
    {
        get;
        set;
    }

    public virtual string Name
    {
        get;
        set;
    }
}
Run Code Online (Sandbox Code Playgroud)

但我需要其他属性,所以我在另一个文件中声明它们:

代理.cs

public partial class Agent
{
    [NotMapped]
    public dynamic Custom { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

问题是Agent.cs是在DataModel.Agent.cs之前编译的,所以编译器按照这个顺序生成属性:Custom、Id、Name,结果JSON很奇怪。

我希望它是:ID、名称、自定义。换句话说,我总是希望 DataModel 类排在第一位。

编辑:澄清一下,唯一的目标是通过始终将 Id 放在首位来使 JSON 更漂亮,这是一种非常常见的模式。这对应用程序的工作方式绝对没有影响。

有没有办法强制编译器始终首先编译其中一个文件?

.net c# partial-classes

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

C#:部分类

这是一个快速确认问题:

为了使部分类工作,我最初认为会有一个主类public class ManageDates,然后你会创建像public partial class ManageDates扩展ManageDates类的部分类.

但是从一些实验中,我发现如果你要使用部分类,必须声明每个单独的类public partial class [ClassName]......

我在这个结论中是否正确?

c# partial-classes

0
推荐指数
1
解决办法
259
查看次数

在WPF中使用部分类

在过去的几个月里,我做了很多研究,但还没有真正找到我的问题的好答案:

一些背景信息:我是WPF的新手,并被要求使用它创建一个项目.我自己学习了大部分概念,但我正在努力解决一个主要问题.MainWindow课堂上的代码太多了.

代码太多的原因:代码太多,因为我的UI元素的所有事件都必须在这一个类中进行控制.

现在我刚刚发现了部分类的使用.所以我计划将事件拆分成一个单独的文件.我只是想知道是否有更好的方法来减少MainWindow班级的规模?我无法找到在类之间传递控件的方法,因为我知道在类或方法之间传递TextBoxesListBoxes等等是不好的.(但我确实知道你可以传递诸如textBox1.Text或类似属性之类的参数,但这并不能解决我的问题.

c# wpf partial-classes

0
推荐指数
1
解决办法
4435
查看次数

如何通过初始化部分类的构造函数来调用Partial Classes中的对象?

我正在使用C#编写ASP.NET MVC3.我收到如下错误

Type 'Test' already defines a member called 'Test' with the same parameter types
Run Code Online (Sandbox Code Playgroud)

我的代码是:

public partial class Test
{
    Test()
    {
       //some code
    }
}

public partial class Test
{
    Test()
    {
        days = new List<SelectListItem>();
    }

    public IList<SelectListItem> days { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

两个类都在不同的文件中.
我不想修改第一个部分类.那么我怎样才能处理这种情况,我要两次调用相同的构造函数?

c# constructor partial-classes asp.net-mvc-3

0
推荐指数
2
解决办法
2488
查看次数