Tag: 构造函数

如何为给定的Type创建实例?

有了generics,你可以 var object = default(T); 但是当你拥有的只是一个Type实例时,我只能这样做 constructor = type.GetConstructor(Type.EmptyTypes); var parameters = new object[0]; var obj = constructor.Invoke(parameters); 甚至 var obj = type.GetConstructor(Type.EmptyTypes).Invoke(new object[0]); 是不是有更短的方式,如generics版本?

通用C#复制构造函数

为c#类编写通用复制构造函数的最佳方法是什么? 它们都从一个抽象基类inheritance,所以我可以使用reflection来映射属性,但我想知道是否有更好的方法?

如何创建枚举类型的属性

enum E_Color { red, black }; private E_Color Color { get { return Color; } set { Color = value; } } public Card(int color, int num) { Color = (E_Color)color; Number = num; } 所以这是我的代码,我不知道这是什么问题,我很确定它在这里。 我是c#的新手(我以前用c ++编程),所以我不知道该怎么做。 在编译时运行它但打印“由于StackOverflowException导致进程终止”。 如果我进入它只是停止debuging并完成它到达构造函数。

错误1字段初始值设定项无法引用非静态字段,方法或属性

public partial class Form1 : Form { Class1 class = new Class1(30,a); public Form1() { InitializeComponent(); } public int a = 0; private void Timer1_Tick(object sender, EventArgs e) { a += 1; } } 我想在我的calss中使用变量’a’,但我无法通过我正在使用的构造函数将其“移动”到我的类。 我收到的错误信息是: 错误:字段初始值设定项无法引用非静态字段,方法或属性。 我知道这是一个基本问题,但感谢帮助 class Class1 { private int r; private int x; public Construct(int p, int c) { this.r = […]

分配给’this’的C#类构造函数

我有一个’天真’的问题。 使用以下示例代码: public class ThisClass { public int ThisClassID { get; set; } public string ThisValue { get; set;} public ThisClass() { } public ThisClass(int thisClassID) { using (MyContext dbContext = new MyContext()) { this = dbContext.CaseNotes.Find(thisClassID); } } } 当然,我收到错误Cannot assign to ‘this’ because it is read-only 我所知道的解决这个问题的唯一两种方法是使用静态方法,或者分别分配给每个属性。 有没有办法创建一个简单的构造函数,将数据库实体返回this ? 更新以下两个答案都是正确的,但我只接受一个。 关于工厂和存储库模式的使用进行了一些有趣的讨论,当删除可能的答案时,这些模式被遗忘地删除了。 参数同样是平衡的,有些人指出entity framework本身是一个使用存储库模式的工厂。 […]

inheritance一个没有任何构造函数的抽象类

我想从另一个类inheritance一个类,标记为抽象,没有定义任何构造函数。 这是我的代码: // In one assembly (TheMessage.dll), as seen via F12 in VS (from Metadata) namespace Namespace1 { public abstract class Message { public string Body { get; set; } // some abstract methods here, not shown. } } // In another assembly (TheUser.dll) namespace Namespace2 { public class MyMessage : Namespace1.Message { public MyMessage() […]

需要C#构造函数语法解释

有人可以向我解释以下构造函数语法。 我以前没遇到它,并在同事代码中注意到它。 public Service () : this (Service.DoStuff(), DoMoreStuff()) { }

为什么我不应该在构造函数中调用我的依赖项?

我一直认为从构造函数中调用类依赖项是一种不好的做法,但是昨天无法向同事说明原因。 任何人都可以提供不这样做的充分理由吗?

温莎城堡与多个建设者

我目前正在进行转换,从使用Ninject到当前版本的Castle Windsor,用于简单的C#.NET应用程序。 在大多数情况下,转换进展顺利,容器的实施已经完美无缺。 但是我的存储库对象存在一个小问题。 我有一个用户存储库对象,以下列方式编码: public class UserRepository : IUserRepository { public UserRepository(IObjectContext objectContext) { // Check that the supplied arguments are valid. Validate.Arguments.IsNotNull(objectContext, “objectContext”); // Initialize the local fields. ObjectContext = objectContext; } public UserRepository(IObjectContextFactory factory) : this(factory.CreateObjectContext()) { } // ———————————————– // Insert methods and properties… // ———————————————– } 为了对应这段代码,我在应用程序的配置文件中设置了以下条目: ${objectContextFactory} 对我来说,一切看起来都应该如此。 当我尝试解析IObjectContextFactory服务的实例时,我检索一个ObjectContextFactory对象。 […]

从构造函数调用的异步方法

我有一个问题,我在构造函数中调用async方法,如何解决或有一个很好的解决方案,这里是一个例子 public Constructor() { Value = PopulateValueFromDB(); //async method CalculateInDB(); // async method } public async Task PopulateValueFromDB() { … do some async calls return await … } public async Task CalculateInDB() { … return await … } 基本上在构造函数中我有一个错误,因为我不能使用等待那里,我不能使它异步。 对于CalculateInDB我可以使它返回无效,然后我解决它的问题,虽然我读到某处返回void不是很好的解决方案。 关于PopulateVlaue方法……我必须返回一些东西…… 那么是否有一个解决方案,我不应该使用那些方法然后使它们同步而不是异步?