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请检查内部的上方,有一个私有的无参数构造函数