结构默认构造函数的属性
Attribute on struct default constructor
因为结构不能有明确的用户定义的无参数构造函数,例如
public struct MyStruct
{
public MyStruct() { … } // Not allowed!
}
我想知道是否以及如何将属性应用到那个确切的构造函数。
最后,我想做的是这个(最好是如果无参数构造函数可以是私有的,但那也是不允许的):
public struct MyStruct
{
[Obsolete("Do not call the constructor directly, use MyStruct.Get() instead.")]
public MyStruct() { … }
public static MyStruct Get
{
// Important initializing here.
}
}
有没有像这个虚构的属性目标 [constructor: Obsolete()]
允许将属性应用于默认构造函数的东西?
编辑:更多信息。
情况是这样的:我需要用MyStruct
代替P/Invoke,不能用class。我想警告用户他们不应该获得 MyStruct
的实例,因为它错过了重要的初始化,他们应该改用工厂方法。
因为 struct 是一个 ValueType,就其性质而言你找不到任何方法。
无论你是否实例化一个结构体,它都会被实例化。
int x = new int();
等同于 int x;
和
MyStruct s = new MyStruct();
等同于 MyStruct s;
假设您可以找到一种方法来警告 MyStruct s = new MyStruct();
。 MyStruct s;
的任何定义也会被警告!那就没办法了。
因为结构不能有明确的用户定义的无参数构造函数,例如
public struct MyStruct
{
public MyStruct() { … } // Not allowed!
}
我想知道是否以及如何将属性应用到那个确切的构造函数。 最后,我想做的是这个(最好是如果无参数构造函数可以是私有的,但那也是不允许的):
public struct MyStruct
{
[Obsolete("Do not call the constructor directly, use MyStruct.Get() instead.")]
public MyStruct() { … }
public static MyStruct Get
{
// Important initializing here.
}
}
有没有像这个虚构的属性目标 [constructor: Obsolete()]
允许将属性应用于默认构造函数的东西?
编辑:更多信息。
情况是这样的:我需要用MyStruct
代替P/Invoke,不能用class。我想警告用户他们不应该获得 MyStruct
的实例,因为它错过了重要的初始化,他们应该改用工厂方法。
因为 struct 是一个 ValueType,就其性质而言你找不到任何方法。
无论你是否实例化一个结构体,它都会被实例化。
int x = new int();
等同于 int x;
和
MyStruct s = new MyStruct();
等同于 MyStruct s;
假设您可以找到一种方法来警告 MyStruct s = new MyStruct();
。 MyStruct s;
的任何定义也会被警告!那就没办法了。