我创建了一个需要公共默认构造函数的类,但是 永远不会被称为;而是在DataGrid.AddingNewItem使用另一个构造函数。
我想告诉开发人员默认构造函数不适合他们使用。 是否有适合此目的的属性?
我使用MethodImplAttributes.InternalCall检查了DebuggerNonUserCode和MethodImplAttribute,但不确定这是否正确。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.dataGrid1.CanUserAddRows = true;
var list = new List<RowX>();
this.dataGrid1.ItemsSource = CollectionViewSource.GetDefaultView(list);
this.dataGrid1.AddingNewItem += (s, e) => e.NewItem = new RowX("ABC");
}
}
public class RowX
{
public RowX()
{
//this is not used. but CollectionView require this to be public or
//CanUserAddRows doesn't work.
}
public RowX(object o)
{
//this is the actual ctor.
}
public string Text { get; set; }
}
答案 0 :(得分:1)
标记private
class Foo
{
private Foo() {}
}
答案 1 :(得分:0)
您可以为构造函数指定access modifier。
private
这意味着它只能从该类中的另一个构造函数调用。
public class PrivateClass
{
//Only from inside this class:
private PrivateClass()
{
}
public static PrivateClass GetPrivateClass()
{
//This calls the private constructor so you can control exactly what happens
return new PrivateClass();
}
}
internal
这意味着只有同一个程序集中的代码(即来自库内部的代码)才能访问它。
public class InternalClass
{
//Only from within the same assembly
internal InternalClass(string foo)
{
}
}