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

时间:2014-07-14 07:16:10

标签: c# oop constructor

我正在编写代码并发现一些奇怪的事情。如果我尝试像这样制作Transaction类的实例

 Transaction ts = new Transaction(); 

编译器引发错误The type System.Transactions.Transaction has no constructor defined

当我查看此课程的定义时,我发现它被定义为公开,没有StaticAbstract关键字。

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);
 }
 }

如果class是public,那么为什么编译器不为我创建默认构造函数?

1 个答案:

答案 0 :(得分:5)

如果构造函数不是public,即如果它被声明为privateprotectedinternalprotected internal,则无法创建它的实例

It is declared private,我收到错误消息“无法访问私有构造函数”。