4

我正在使用OracleClient库版本 1.0.5000.0,我对OracleParameter类及其ICloneable.

这是OracleParameter类的定义:

public sealed class OracleParameter : MarshalByRefObject, IDbDataParameter, IDataParameter, ICloneable {
    public OracleParameter();
    public OracleParameter(string name, object value);
    public OracleParameter(string name, OracleType oracleType);
    public OracleParameter(string name, OracleType oracleType, int size);
    public OracleParameter(string name, OracleType oracleType, int size, string srcColumn);
    public OracleParameter(string name, OracleType oracleType, int size, ParameterDirection direction, bool isNullable, byte precision, byte scale, string srcColumn, DataRowVersion srcVersion, object value);

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
    [RefreshProperties(RefreshProperties.All)]
    [Browsable(false)]
    public DbType DbType { get; set; }
    [RefreshProperties(RefreshProperties.All)]
    public ParameterDirection Direction { get; set; }
    [Browsable(false)]
    [DesignOnly(true)]
    [EditorBrowsable(EditorBrowsableState.Never)]
    [DefaultValue(false)]
    public bool IsNullable { get; set; }
    [DefaultValue(0)]
    [Browsable(false)]
    public int Offset { get; set; }
    [RefreshProperties(RefreshProperties.All)]
    public OracleType OracleType { get; set; }
    [DefaultValue("")]
    public string ParameterName { get; set; }
    [DefaultValue(0)]
    public byte Precision { get; set; }
    [DefaultValue(0)]
    public byte Scale { get; set; }
    [DefaultValue(0)]
    public int Size { get; set; }
    [DefaultValue("")]
    public string SourceColumn { get; set; }
    public DataRowVersion SourceVersion { get; set; }
    [DefaultValue("")]
    [RefreshProperties(RefreshProperties.All)]
    [TypeConverter(typeof(StringConverter))]
    public object Value { get; set; }

    public override string ToString();
}

它实现了System.ICloneable,但那里没有Clone()方法。

谁能解释一下?

4

2 回答 2

5

在 .NET 中,您可以使用以下语法显式实现接口成员:

对象 System.IClonable.Clone() { }

因此,您只能通过显式转换为预期接口来使用该方法。

另请参阅 http://msdn.microsoft.com/en-us/library/system.data.oracleclient.oracleparameter.system.icloneable.clone(VS.85).aspx

于 2009-08-25T21:31:27.623 回答
2

这不时出现。:) 检查以下...

void Main()
{
    var e = new Example();
    I   i = e as I;

    e.m1();  // prints Class m1()
    i.m1();  // prints Interface m1()
}

public interface I
{
  void m1();
}

public class Example : I
{
  public void m1()
  {
    Console.WriteLine( "Class m1()" );
  }

  void I.m1()
  {
    Console.WriteLine( "Interface m1()" );
  }
}
于 2009-08-25T21:41:19.647 回答