2010-09-24 73 views
3

Visual Studio引发了一个无用的异常,我认为这是由于我在具有相同名称的两个相似类中有多个依赖项属性。相同的依赖项属性,多个类

这些类是添加/编辑联系人,所以他们共享一些属性,我的问题是这样的。

我可以注册一个属性为:

DependencyProperty.Register(/*...*/); 

或:

MyDP.AddOwner(/*...*/) 

的问题是,我不知道是否添加或编辑类将首先被​​实例化的方式(取决于用户选择),因为它们被定义为静态的,所以我不能在其初始化逻辑中加入任何幻想......我没有可以自我包含在2个类中的想法。

那么如何在这种情况下设置依赖项属性?

编辑:

类型初始化异常:关于 'CharterHouseTouchScreenDemo.Views.Membership.AddMembershipView' 的类型初始引发了异常。

我知道它是依赖属性初始化程序之一,因为当它逐步通过它甚至没有得到构造函数。

此外,在这种情况下,他们没有足够的相似性成为同一类。简而言之,它们共享的唯一信息就是存储在此依赖项属性中的信息。

编辑2:

我惊讶,这不是更好地记录,任何媒体,大规模应用的意外命名依赖属性同样的事情的机会相当大。尤其是像普通的事情BackgroundColourHeadingTextCurrentXYZ ...

我一直以为你传递的主阶级的类型,这样就不会造成这样的问题。

+0

首先,什么是“无用的例外呢?”这是获得答案的重要部分。 – 2010-09-24 12:42:49

+0

另外,为什么单独的类?如果他们共享功能,是否有理由复制作品?不仅是,现在你做的工作加倍(并导致这类问题),这将可能是一个维护的噩梦(举例来说,如果您发现错误,你必须记住要改变它的两倍)。如果你真的需要单独的课程,并且拥有第三个具有共享功能的课程,那么你最好使用单个课程。根据您的设计,它可能是其他人从其派生的抽象类或接口,也可能是其他类调用的独立类。 – 2010-09-24 12:44:04

+2

Egads。当静态构造函数中出现断点(无论是您定义的还是编译器创建的)时,都会引发TypeInitializationException。它是抛出异常的一个包装,它打破了静态构造函数。所以TypeInitializationException.InnerException会告诉你到底发生了什么。 – Will 2010-09-24 12:58:47

回答

1

不是一个真正的犹太答案,但它的工作原理:

#region SubscriptionFee 

/// <summary> 
/// SubscriptionFee Dependency Property 
/// </summary> 
public static readonly DependencyProperty SubscriptionFeeProperty = 
    DependencyProperty.Register("SubscriptionFee_2", typeof(decimal), typeof(EditMembershipViewModel), 
     new FrameworkPropertyMetadata((decimal)0)); 

/// <summary> 
/// Gets or sets the SubscriptionFee property. This dependency property 
/// indicates the new subscription fee for the customer. 
/// </summary> 
public decimal SubscriptionFee 
{ 
    get { return (decimal)GetValue(SubscriptionFeeProperty); } 
    set { SetValue(SubscriptionFeeProperty, value); } 
} 

#endregion SubscriptionFee 
0

首先,对不起,这不是作为评论发布。我不愿意留下评论。

对于类名为“AddContact和EditContact”的类,在我看来,您正在构建这些类来编辑可能是Contact类的东西?

你可能会对你的解决方案完全错误并导致自己更大的头痛。

你可以提供关于代码的更多细节吗?例如,如果您有一个显示联系人信息的GUI并且希望对其进行编辑,那么比添加/编辑类有更好的解决方案。依赖属性应该是你的联系人类的一部分,而不是他们自己的单独编辑类。

也许你不妨就Model View View-ModelWPF command framework

花费一个半小时就这两个话题读了可能会导致您一个更优雅的解决方案,是少你一个hastle的阅读起来。

+0

联系人信息保存在通过Web服务,这是建立Ø设计模式(这对我的生活我不记得名字的原则访问数据库) 反正..它是由在其被发送到服务命令类填充访问时,UpdateContactCommand和CreateContactCommand是编程完全孤立的,而它们共享相同的属性名。因此,分离创建和编辑联系人类(p.s.有服务的优点,只是没有真正遇到这里...) – 2010-09-26 01:10:08