gpt4 book ai didi

c# - 为什么不能在 System.Transactions 命名空间中创建 Transaction 类的实例

转载 作者:行者123 更新时间:2023-11-30 14:55:44 25 4
gpt4 key购买 nike

我刚刚写了一段代码,发现了一些奇怪的事情。如果我尝试像这样创建 Transaction 类的实例

 Transaction ts = new Transaction(); 

编译器报错 The type System.Transactions.Transaction has no constructor defined

当我检查这个类的定义时,我发现它被定义为公共(public)的,没有 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);
}
}

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

最佳答案

如果构造函数不是public,即如果它被声明为privateprotectedinternalprotected internal 您不能创建它的实例。

It is declared private ,我收到错误提示“无法访问私有(private)构造函数”。

关于c# - 为什么不能在 System.Transactions 命名空间中创建 Transaction 类的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24731361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com