Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么无法在System.Transactions命名空间中创建事务类的实例_C#_Oop_Constructor - Fatal编程技术网

C# 为什么无法在System.Transactions命名空间中创建事务类的实例

C# 为什么无法在System.Transactions命名空间中创建事务类的实例,c#,oop,constructor,C#,Oop,Constructor,我正在写代码,发现了一些奇怪的东西。如果我尝试像这样创建事务类的实例 Transaction ts = new Transaction(); 编译器提示我错误类型System.Transactions.Transaction没有定义构造函数 当我浏览这个类的定义时,我发现它被定义为public,没有Static或Abstract关键字 namespace System.Transactions { // Summary: // Represents a transaction. [

我正在写代码,发现了一些奇怪的东西。如果我尝试像这样创建
事务
类的实例

 Transaction ts = new Transaction(); 
编译器提示我错误
类型System.Transactions.Transaction没有定义构造函数

当我浏览这个类的定义时,我发现它被定义为public,没有
Static
Abstract
关键字

namespace System.Transactions
{
// Summary:
//     Represents a transaction.
[Serializable]
public class Transaction : IDisposable, ISerializable
{
    // Summary:
    //     Returns a value that indicates whether two System.Transactions.Transaction
    //     instances are not equal.
    //
    // Parameters:
    //   x:
    //     The System.Transactions.Transaction instance that is to the left of the inequality
    //     operator.
    //
    //   y:
    //     The System.Transactions.Transaction instance that is to the right of the
    //     inequality operator.
    //
    // Returns:
    //     true if x and y are not equal; otherwise, false.
    public static bool operator !=(Transaction x, Transaction y);
    //
    // Summary:
    //     Tests whether two specified System.Transactions.Transaction instances are
    //     equivalent.
    //
    // Parameters:
    //   x:
    //     The System.Transactions.Transaction instance that is to the left of the equality
    //     operator.
    //
    //   y:
    //     The System.Transactions.Transaction instance that is to the right of the
    //     equality operator.
    //
    // Returns:
    //     true if x and y are equal; otherwise, false.
    public static bool operator ==(Transaction x, Transaction y);

    // Summary:
    //     Gets or sets the ambient transaction.
    //
    // Returns:
    //     A System.Transactions.Transaction that describes the current transaction.
    public static Transaction Current { get; set; }
    //
    // Summary:
    //     Gets the isolation level of the transaction.
    //
    // Returns:
    //     One of the System.Transactions.IsolationLevel values that indicates the isolation
    //     level of the transaction.
    public IsolationLevel IsolationLevel { get; }
    //
    // Summary:
    //     Retrieves additional information about a transaction.
    //
    // Returns:
    //     A System.Transactions.TransactionInformation that contains additional information
    //     about the transaction.
    public TransactionInformation TransactionInformation { get; }

    // Summary:
    //     Indicates that the transaction is completed.
    //
    // Exceptions:
    //   System.ObjectDisposedException:
    //     An attempt to subscribe this event on a transaction that has been disposed.
    public event TransactionCompletedEventHandler TransactionCompleted;

    // Summary:
    //     Creates a clone of the transaction.
    //
    // Returns:
    //     A System.Transactions.Transaction that is a copy of the current transaction
    //     object.
    public Transaction Clone();
    //
    // Summary:
    //     Creates a dependent clone of the transaction.
    //
    // Parameters:
    //   cloneOption:
    //     A System.Transactions.DependentCloneOption that controls what kind of dependent
    //     transaction to create.
    //
    // Returns:
    //     A System.Transactions.DependentTransaction that represents the dependent
    //     clone.
    public DependentTransaction DependentClone(DependentCloneOption cloneOption);
    //
    // Summary:
    //     Releases the resources that are held by the object.
    public void Dispose();
    //
    // Summary:
    //     Enlists a durable resource manager that supports two phase commit to participate
    //     in a transaction.
    //
    // Parameters:
    //   resourceManagerIdentifier:
    //     A unique identifier for a resource manager, which should persist across resource
    //     manager failure or reboot.
    //
    //   enlistmentNotification:
    //     An object that implements the System.Transactions.IEnlistmentNotification
    //     interface to receive two phase commit notifications.
    //
    //   enlistmentOptions:
    //     System.Transactions.EnlistmentOptions.EnlistDuringPrepareRequired if the
    //     resource manager wants to perform additional work during the prepare phase.
    //
    // Returns:
    //     An System.Transactions.Enlistment object that describes the enlistment.
    public Enlistment EnlistDurable(Guid resourceManagerIdentifier, IEnlistmentNotification enlistmentNotification, EnlistmentOptions enlistmentOptions);
    //
    // Summary:
    //     Enlists a durable resource manager that supports single phase commit optimization
    //     to participate in a transaction.
    //
    // Parameters:
    //   resourceManagerIdentifier:
    //     A unique identifier for a resource manager, which should persist across resource
    //     manager failure or reboot.
    //
    //   singlePhaseNotification:
    //     An object that implements the System.Transactions.ISinglePhaseNotification
    //     interface that must be able to receive single phase commit and two phase
    //     commit notifications.
    //
    //   enlistmentOptions:
    //     System.Transactions.EnlistmentOptions.EnlistDuringPrepareRequired if the
    //     resource manager wants to perform additional work during the prepare phase.
    //
    // Returns:
    //     An System.Transactions.Enlistment object that describes the enlistment.
    public Enlistment EnlistDurable(Guid resourceManagerIdentifier, ISinglePhaseNotification singlePhaseNotification, EnlistmentOptions enlistmentOptions);
    //
    // Summary:
    //     Enlists a resource manager that has an internal transaction using a promotable
    //     single phase enlistment (PSPE).
    //
    // Parameters:
    //   promotableSinglePhaseNotification:
    //     A System.Transactions.IPromotableSinglePhaseNotification interface implemented
    //     by the participant.
    //
    // Returns:
    //     A System.Transactions.SinglePhaseEnlistment interface implementation that
    //     describes the enlistment.
    public bool EnlistPromotableSinglePhase(IPromotableSinglePhaseNotification promotableSinglePhaseNotification);
    //
    // Summary:
    //     Enlists a volatile resource manager that supports two phase commit to participate
    //     in a transaction.
    //
    // Parameters:
    //   enlistmentNotification:
    //     An object that implements the System.Transactions.IEnlistmentNotification
    //     interface to receive two phase commit notifications.
    //
    //   enlistmentOptions:
    //     System.Transactions.EnlistmentOptions.EnlistDuringPrepareRequired if the
    //     resource manager wants to perform additional work during the prepare phase.
    //
    // Returns:
    //     An System.Transactions.Enlistment object that describes the enlistment.
    public Enlistment EnlistVolatile(IEnlistmentNotification enlistmentNotification, EnlistmentOptions enlistmentOptions);
    //
    // Summary:
    //     Enlists a volatile resource manager that supports single phase commit optimization
    //     to participate in a transaction.
    //
    // Parameters:
    //   singlePhaseNotification:
    //     An object that implements the System.Transactions.ISinglePhaseNotification
    //     interface that must be able to receive single phase commit and two phase
    //     commit notifications.
    //
    //   enlistmentOptions:
    //     System.Transactions.EnlistmentOptions.EnlistDuringPrepareRequired if the
    //     resource manager wants to perform additional work during the prepare phase.
    //
    // Returns:
    //     An System.Transactions.Enlistment object that describes the enlistment.
    public Enlistment EnlistVolatile(ISinglePhaseNotification singlePhaseNotification, EnlistmentOptions enlistmentOptions);
    //
    // Summary:
    //     Determines whether this transaction and the specified object are equal.
    //
    // Parameters:
    //   obj:
    //     The object to compare with this instance.
    //
    // Returns:
    //     true if obj and this transaction are identical; otherwise, false.
    public override bool Equals(object obj);
    //
    // Summary:
    //     Returns the hash code for this instance.
    //
    // Returns:
    //     A 32-bit signed integer hash code.
    public override int GetHashCode();
    //
    // Summary:
    //     Rolls back (aborts) the transaction.
    public void Rollback();
    //
    // Summary:
    //     Rolls back (aborts) the transaction.
    //
    // Parameters:
    //   e:
    //     An explanation of why a rollback occurred.
    public void Rollback(Exception e);
 }
 }

如果类是公共的,那么为什么编译器不为我创建默认构造函数呢???

如果构造函数不是
public
,也就是说如果它被声明为
private
protected
internal
protected internal
,那么就不能创建它的实例


,我得到的错误是“无法访问私有构造函数”。

@RajeevKumar非公共构造函数将不会显示在定义中。FWIW,MSDN没有列出该类的任何构造函数,而它会列出从该类派生的类的构造函数。我添加了引用源链接。它有一个私有构造函数和内部构造函数,这就是编译器不创建默认构造函数的原因。@SriramSakthivel,构造函数声明为
internal
,而不是
private
@haim770请检查内部的上方,有一个私有的无参数构造函数